Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
LU-15143 osd-ldiskfs: osd_declare_write() underestimates credits
[fs/lustre-release.git]
/
lustre
/
osd-ldiskfs
/
osd_io.c
diff --git
a/lustre/osd-ldiskfs/osd_io.c
b/lustre/osd-ldiskfs/osd_io.c
index
ef428ee
..
dc4208a
100644
(file)
--- a/
lustre/osd-ldiskfs/osd_io.c
+++ b/
lustre/osd-ldiskfs/osd_io.c
@@
-150,9
+150,9
@@
void osd_fini_iobuf(struct osd_device *d, struct osd_iobuf *iobuf)
iobuf->dr_elapsed_valid = 0;
LASSERT(iobuf->dr_dev == d);
LASSERT(iobuf->dr_frags > 0);
iobuf->dr_elapsed_valid = 0;
LASSERT(iobuf->dr_dev == d);
LASSERT(iobuf->dr_frags > 0);
- lprocfs_oh_tally(&d->od_brw_stats.
hist[BRW_R_DIO_FRAGS+
rw],
+ lprocfs_oh_tally(&d->od_brw_stats.
bs_hist[BRW_R_DIO_FRAGS +
rw],
iobuf->dr_frags);
iobuf->dr_frags);
- lprocfs_oh_tally_log2(&d->od_brw_stats.hist[BRW_R_IO_TIME+rw],
+ lprocfs_oh_tally_log2(&d->od_brw_stats.
bs_
hist[BRW_R_IO_TIME+rw],
ktime_to_ms(iobuf->dr_elapsed));
}
}
ktime_to_ms(iobuf->dr_elapsed));
}
}
@@
-229,8
+229,8
@@
static void dio_complete_routine(struct bio *bio, int error)
static void record_start_io(struct osd_iobuf *iobuf, int size)
{
static void record_start_io(struct osd_iobuf *iobuf, int size)
{
- struct osd_device
*osd = iobuf->dr_dev;
- struct obd_histogram *h = osd->od_brw_stats.hist;
+ struct osd_device *osd = iobuf->dr_dev;
+ struct obd_histogram *h = osd->od_brw_stats.
bs_
hist;
iobuf->dr_frags++;
atomic_inc(&iobuf->dr_numreqs);
iobuf->dr_frags++;
atomic_inc(&iobuf->dr_numreqs);
@@
-1408,16
+1408,12
@@
static int osd_declare_write_commit(const struct lu_env *env,
/* ignore quota for the whole request if any page is from
* client cache or written by root.
*
/* ignore quota for the whole request if any page is from
* client cache or written by root.
*
- * XXX once we drop the 1.8 client support, the checking
- * for whether page is from cache can be simplified as:
- * !(lnb[i].flags & OBD_BRW_SYNC)
- *
* XXX we could handle this on per-lnb basis as done by
* grant.
*/
if ((lnb[i].lnb_flags & OBD_BRW_NOQUOTA) ||
* XXX we could handle this on per-lnb basis as done by
* grant.
*/
if ((lnb[i].lnb_flags & OBD_BRW_NOQUOTA) ||
- (lnb[i].lnb_flags &
(OBD_BRW_FROM_GRANT | OBD_BRW_SYNC)) ==
-
OBD_BRW_FROM_GRANT
)
+ (lnb[i].lnb_flags &
OBD_BRW_SYS_RESOURCE) ||
+
!(lnb[i].lnb_flags & OBD_BRW_SYNC)
)
declare_flags |= OSD_QID_FORCE;
/*
declare_flags |= OSD_QID_FORCE;
/*
@@
-1960,7
+1956,7
@@
static ssize_t osd_declare_write(const struct lu_env *env, struct dt_object *dt,
* level.
*/
depth = inode != NULL ? ext_depth(inode) : 0;
* level.
*/
depth = inode != NULL ? ext_depth(inode) : 0;
- depth = min(max(depth, 1) +
1
, LDISKFS_MAX_EXTENT_DEPTH);
+ depth = min(max(depth, 1) +
3
, LDISKFS_MAX_EXTENT_DEPTH);
credits = depth;
/* if not append, then split may need to modify
* existing blocks moving entries into the new ones
credits = depth;
/* if not append, then split may need to modify
* existing blocks moving entries into the new ones