Please don't reply to lustre-devel. Instead, comment in Bugzilla by using the 
following link:
https://bugzilla.lustre.org/show_bug.cgi?id=9977



it seems the last patch has some defects:

1. filter_precreate() 
if (fo_destroy_in_progress) lost "rc = -EAGAIN;" when was moved
below in the code. looks like a bug.

2. if there is no object on ost, filter_lvbo_init() does not initialize
lvb, just sets enoent into lbv->blocks. after that object may be created
in several cases: filter_truncate, filter_preprw_write and ost_create.
whereas first 2 update lvb (filter_lbvo_update), ost_create does not do it.
the following glimpse calls ldlm_handle_enqueue()/filter_intent_policy()
and updates lvb only if there are PW locks after lvb size, i.e. does not
update lvb in other cases, thus it seems glimpse may return wrong data.

3. another problem with ost_create, if a client has a lock over a
non-existent object, an ost_create happens, lock is not cancelled, thus
client will not go to ost to update the object metadata, in particular
on the next glimpse client will still think there is no object.

4. why do we need both OST_LVB_ERR_INIT и OST_LVB_ERR_MASK?
MASK seems to be enough.

_______________________________________________
Lustre-devel mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-devel

Reply via email to