It was missed somehow. Otherwise, this extent would never be flushed
until the next write to this file is coming. Even writepage() won't
help out this case.
Signed-off-by: Jinshan Xiong <jinshan.xiong@intel.com>
Change-Id: I179269163e5ad5382448036046925a5747282472
Reviewed-on: http://review.whamcloud.com/4477
Tested-by: Hudson
Reviewed-by: Niu Yawei <niu@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
struct cl_page *cp = ops->ops_cl.cpl_page;
pgoff_t index = cp->cp_index;
struct osc_async_page *oap = &ops->ops_oap;
struct cl_page *cp = ops->ops_cl.cpl_page;
pgoff_t index = cp->cp_index;
struct osc_async_page *oap = &ops->ops_oap;
OSC_EXTENT_DUMP(D_CACHE, ext,
"flush page %p make it urgent.\n", oap);
cfs_list_add_tail(&ext->oe_link, &obj->oo_urgent_exts);
OSC_EXTENT_DUMP(D_CACHE, ext,
"flush page %p make it urgent.\n", oap);
cfs_list_add_tail(&ext->oe_link, &obj->oo_urgent_exts);
oio->oi_trunc = NULL;
if (ext != NULL) {
oio->oi_trunc = NULL;
if (ext != NULL) {
EASSERT(ext->oe_nr_pages > 0, ext);
EASSERT(ext->oe_state == OES_TRUNC, ext);
EASSERT(!ext->oe_urgent, ext);
EASSERT(ext->oe_nr_pages > 0, ext);
EASSERT(ext->oe_state == OES_TRUNC, ext);
EASSERT(!ext->oe_urgent, ext);
if (ext->oe_fsync_wait && !ext->oe_urgent) {
ext->oe_urgent = 1;
cfs_list_move_tail(&ext->oe_link, &obj->oo_urgent_exts);
if (ext->oe_fsync_wait && !ext->oe_urgent) {
ext->oe_urgent = 1;
cfs_list_move_tail(&ext->oe_link, &obj->oo_urgent_exts);
}
osc_update_pending(obj, OBD_BRW_WRITE, ext->oe_nr_pages);
osc_object_unlock(obj);
osc_extent_put(env, ext);
}
osc_update_pending(obj, OBD_BRW_WRITE, ext->oe_nr_pages);
osc_object_unlock(obj);
osc_extent_put(env, ext);
- osc_list_maint(osc_cli(obj), obj);
+ if (unplug)
+ osc_io_unplug_async(env, osc_cli(obj), obj);
{
struct osc_extent *ext;
CFS_LIST_HEAD(discard_list);
{
struct osc_extent *ext;
CFS_LIST_HEAD(discard_list);
}
if (list != NULL) {
cfs_list_move_tail(&ext->oe_link, list);
}
if (list != NULL) {
cfs_list_move_tail(&ext->oe_link, list);
}
} else {
/* the only discarder is lock cancelling, so
}
} else {
/* the only discarder is lock cancelling, so