Object with zero FID is used in stripe allocation, and it's
meaningless to initialize such object via lu_object_find_at(),
return error early to avoid assertion in lu_object_put().
Signed-off-by: Lai Siyao <lai.siyao@whamcloud.com>
Change-Id: Ia1bda3d01ff7552e94f31a9c928868652937d559
Reviewed-on: https://review.whamcloud.com/39792
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Stephane Thiell <sthiell@stanford.edu>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
ENTRY;
+ /* FID is from disk or network, zero FID is meaningless, return error
+ * early to avoid assertion in lu_object_put. If a zero FID is wanted,
+ * it should be allocated via lu_object_anon().
+ */
+ if (fid_is_zero(f))
+ RETURN(ERR_PTR(-EINVAL));
+
/*
* This uses standard index maintenance protocol:
*