|
@@ -44,6 +44,7 @@ DEFINE_SPINLOCK(resv_lock);
|
|
|
|
|
|
#define OCFS2_MIN_RESV_WINDOW_BITS 8
|
|
|
#define OCFS2_MAX_RESV_WINDOW_BITS 1024
|
|
|
+#define OCFS2_RESV_DIR_WINDOW_BITS OCFS2_MIN_RESV_WINDOW_BITS
|
|
|
|
|
|
static unsigned int ocfs2_resv_window_bits(struct ocfs2_reservation_map *resmap,
|
|
|
struct ocfs2_alloc_reservation *resv)
|
|
@@ -51,8 +52,11 @@ static unsigned int ocfs2_resv_window_bits(struct ocfs2_reservation_map *resmap,
|
|
|
struct ocfs2_super *osb = resmap->m_osb;
|
|
|
unsigned int bits;
|
|
|
|
|
|
- /* 8, 16, 32, 64, 128, 256, 512, 1024 */
|
|
|
- bits = 4 << osb->osb_resv_level;
|
|
|
+ if (!(resv->r_flags & OCFS2_RESV_FLAG_DIR)) {
|
|
|
+ /* 8, 16, 32, 64, 128, 256, 512, 1024 */
|
|
|
+ bits = 4 << osb->osb_resv_level;
|
|
|
+ } else
|
|
|
+ bits = OCFS2_RESV_DIR_WINDOW_BITS;
|
|
|
|
|
|
return bits;
|
|
|
}
|