Whamcloud - gitweb
LU-4639 hsm: HSM requests not delivered 93/9393/8
authorJames Nunez <james.a.nunez@intel.com>
Tue, 25 Feb 2014 22:34:46 +0000 (15:34 -0700)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 4 Mar 2014 17:49:00 +0000 (17:49 +0000)
The total size of an HSM archive request may exceed the
desired (LNET) message. When this happens, it can hang
the client and not allow the archive request to succeed.

Before we know the total size of the hsm_action_items, we
need to limit the size of the reguest. Doing this limits
the number of items that can be sent in one archive request.
We’ve reduced the size allowed for the user archive request
to MDS_MAXREQSIZE/3.

sanity-hsm test 90 forms a list of files to archive. The
number of files in the list needed to be decreased to
match the limit described above.

Signed-off-by: James Nunez <james.a.nunez@intel.com>
Change-Id: I3c19851b7fedf62854a5a1b4a8f27b9c49d8b313
Reviewed-on: http://review.whamcloud.com/9393
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/dir.c
lustre/tests/sanity-hsm.sh

index 5775cc8..5e8b891 100644 (file)
@@ -1643,8 +1643,8 @@ out_rmdir:
                totalsize = hur_len(hur);
                OBD_FREE_PTR(hur);
 
-               /* Make sure the size is reasonable */
-               if (totalsize >= MDS_MAXREQSIZE)
+               /* Final size will be more than double totalsize */
+               if (totalsize >= MDS_MAXREQSIZE / 3)
                        RETURN(-E2BIG);
 
                OBD_ALLOC_LARGE(hur, totalsize);
index efb42ea..8a1d167 100755 (executable)
@@ -2598,8 +2598,8 @@ test_60() {
 run_test 60 "Changing progress update interval from default"
 
 test_90() {
-       file_count=57
-       mkdir -p $DIR/$tdir
+       file_count=51 # Max number of files constrained by LNET message size
+       mkdir $DIR/$tdir || error "mkdir $DIR/$tdir failed"
        local f=$DIR/$tdir/$tfile
        local FILELIST=/tmp/filelist.txt
        local i=""