From: Yu Jian Date: Mon, 10 Sep 2012 04:02:31 +0000 (+0800) Subject: LU-1824 obdfilter: reset lnb[n].rc in filter_grant_check() X-Git-Tag: 2.2.95~6 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=ae25f616ffc3e4af2c7e4c727ecf185d32e26bf6;p=fs%2Flustre-release.git LU-1824 obdfilter: reset lnb[n].rc in filter_grant_check() After patch http://review.whamcloud.com/3446 was committed, filter_grant_check() would be called a second time if there was no grant space for the write operation in the first time it was called. The issue was that all of the lnb[n].rc values were set to -ENOSPC inside filter_grant_check() the first time it was called, but at the second time, although there was some space and the function returned 0 not -ENOSPC, the lnb[n].rc values were not reset, all of them were still -ENOSPC, which caused the assertion failure inside filter_commitrw_write(). This patch fixes the above issue. Test-Parameters: envdefinitions=SLOW=yes testlist=obdfilter-survey Signed-off-by: Yu Jian Change-Id: Ia0ec57a7d329136b4e1f2f82a337c6cf43f7f66c Reviewed-on: http://review.whamcloud.com/3913 Tested-by: Hudson Reviewed-by: hongchao.zhang Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- diff --git a/lustre/obdfilter/filter_io.c b/lustre/obdfilter/filter_io.c index 23947d5..a946d90 100644 --- a/lustre/obdfilter/filter_io.c +++ b/lustre/obdfilter/filter_io.c @@ -540,6 +540,7 @@ static int filter_grant_check(struct obd_export *exp, struct obdo *oa, if (tmp) bytes += blocksize - tmp; + lnb[n].rc = 0; if ((lnb[n].flags & OBD_BRW_FROM_GRANT) && (oa->o_valid & OBD_MD_FLGRANT)) { if (resend) {