/* llapi_layout user interface */
-extern char *lcm_flags_string(__u16 flags);
+static inline const char *lcm_flags_string(__u16 flags)
+{
+ switch (flags & LCM_FL_FLR_MASK) {
+ case LCM_FL_NOT_FLR:
+ return "not_flr";
+ case LCM_FL_RDONLY:
+ return "ro";
+ case LCM_FL_WRITE_PENDING:
+ return "wp";
+ case LCM_FL_SYNC_PENDING:
+ return "sp";
+ default:
+ return "";
+ }
+}
/**
* An array element storing component info to be resynced during mirror
return;
lo->ldo_is_composite = lds->lds_def_striping_is_composite;
+ if (lds->lds_def_mirror_cnt > 1)
+ lo->ldo_flr_state = LCM_FL_RDONLY;
for (i = 0; i < lo->ldo_comp_cnt; i++) {
struct lod_layout_component *obj_comp =
}
run_test 3 "create components from files located on different MDTs"
+test_4() {
+ local tf=$DIR/$tdir/$tfile
+ local ids=()
+
+ test_mkdir $DIR/$tdir
+
+ # set mirror with setstripe options to directory
+ $LFS mirror create -N2 -E 1M -E eof $DIR/$tdir ||
+ error "set mirror to directory error"
+
+ [ x$($LFS getstripe -v $DIR/$tdir | awk '/lcm_flags/{print $2}') = \
+ x"mirrored" ] || error "failed to create mirrored dir"
+
+ touch $tf
+ verify_mirror_count $tf 2
+
+ ids=($($LFS getstripe $tf | awk '/lcme_id/{print $2}' | tr '\n' ' '))
+ verify_comp_extent $tf ${ids[0]} 0 1048576
+ verify_comp_extent $tf ${ids[1]} 1048576 EOF
+
+ # sub directory should inherit mirror setting from parent
+ test_mkdir $DIR/$tdir/td
+ [ x$($LFS getstripe -v $DIR/$tdir/td | awk '/lcm_flags/{print $2}') = \
+ x"mirrored" ] || error "failed to inherit mirror from parent"
+
+ # mirror extend won't be applied to directory
+ $LFS mirror extend -N2 $DIR/$tdir &&
+ error "expecting mirror extend failure"
+ true
+}
+run_test 4 "Make sure mirror attributes can be inhertied from directory"
+
test_21() {
local tf=$DIR/$tfile
local tf2=$DIR/$tfile-2
llapi_printf(LLAPI_MSG_NORMAL, "\n");
}
-char *lcm_flags_string(__u16 flags)
-{
- switch (flags & LCM_FL_FLR_MASK) {
- case LCM_FL_NOT_FLR:
- return "not_flr";
- case LCM_FL_RDONLY:
- return "ro";
- case LCM_FL_WRITE_PENDING:
- return "wp";
- case LCM_FL_SYNC_PENDING:
- return "sp";
- default:
- return "";
- }
-}
-
static void lov_dump_comp_v1_header(struct find_param *param, char *path,
enum lov_dump_flags flags)
{
" ", comp_v1->lcm_magic);
llapi_printf(LLAPI_MSG_NORMAL, "%2slcm_size: %u\n",
" ", comp_v1->lcm_size);
- llapi_printf(LLAPI_MSG_NORMAL, "%2slcm_flags: %s\n",
- " ", lcm_flags_string(comp_v1->lcm_flags));
+ if (flags & LDF_IS_DIR)
+ llapi_printf(LLAPI_MSG_NORMAL,
+ "%2slcm_flags: %s\n", " ",
+ comp_v1->lcm_mirror_count > 0 ?
+ "mirrored" : "");
+ else
+ llapi_printf(LLAPI_MSG_NORMAL,
+ "%2slcm_flags: %s\n",
+ " ", lcm_flags_string(comp_v1->lcm_flags));
}
if (verbose & VERBOSE_GENERATION) {