Whamcloud - gitweb
LU-1247 obdfilter: fix invalid check of precrate objects
authorAlexander.Boyko <alexander_boyko@xyratex.com>
Wed, 21 Mar 2012 17:47:53 +0000 (21:47 +0400)
committerOleg Drokin <green@whamcloud.com>
Mon, 30 Apr 2012 01:46:56 +0000 (21:46 -0400)
MDT precreate objects when it has objects count less than the
oscc->oscc_grow_count / 2. oscc->oscc_grow_count can be equal
to OST_MAX_PRECREATE, so MDT (last_id - next_id) is less than the
(OST_MAX_PRECREAT * 3 / 2). This patch fix the wrong condition at
filter_handle_precreate() when delete orphans request happend.

Signed-off-by: Alexander Boyko <alexander_boyko@xyratex.com>
Reviewed-by: Andrew Perepechko <andrew_perepechko@xyratex.com>
Reviewed-by: Andriy Skulysh <andriy_skulysh@xyratex.com>
Xyratex-bug-id: MRP-440
Change-Id: I5bac3ee7261fe7462254bd80565d770041c3c206
Reviewed-on: http://review.whamcloud.com/2365
Reviewed-by: Andriy Skulysh <Andriy_Skulysh@xyratex.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/obdfilter/filter.c

index 9dc6584..75fd01b 100644 (file)
@@ -3680,7 +3680,7 @@ static int filter_handle_precreate(struct obd_export *exp, struct obdo *oa,
                 CDEBUG(D_HA, "filter_last_id() = "LPU64" -> diff = %d\n",
                        last, diff);
 
-                if (-diff > OST_MAX_PRECREATE) {
+                if (-diff > (OST_MAX_PRECREATE * 3) / 2) {
                         CERROR("%s: ignoring bogus orphan destroy request: "
                                "obdid "LPU64" last_id "LPU64"\n", obd->obd_name,
                                oa->o_id, last);