Port "llapi_get_connect_flags()" API from b1_8 to master.
i=robert.read
i=landen
extern int llapi_poll_quotacheck(char *mnt, struct if_quotacheck *qchk);
extern int llapi_quotactl(char *mnt, struct if_quotactl *qctl);
extern int llapi_target_iterate(int type_num, char **obd_type, void *args, llapi_cb_t cb);
+extern int llapi_get_connect_flags(const char *mnt, __u64 *flags);
extern int llapi_lsetfacl(int argc, char *argv[]);
extern int llapi_lgetfacl(int argc, char *argv[]);
extern int llapi_rsetfacl(int argc, char *argv[]);
#define LL_IOC_LLOOP_INFO _IOWR('f', 171, long)
#define LL_IOC_LLOOP_DETACH_BYDEV _IOWR('f', 172, long)
#define LL_IOC_PATH2FID _IOR ('f', 173, long)
-#define LL_IOC_GET_MDTIDX _IOR ('f', 174, int)
+#define LL_IOC_GET_CONNECT_FLAGS _IOWR('f', 174, __u64 *)
+#define LL_IOC_GET_MDTIDX _IOR ('f', 175, int)
#define LL_IOC_HSM_CT_START _IOW ('f', 178, struct lustre_kernelcomm *)
sizeof(struct lu_fid)))
RETURN(-EFAULT);
RETURN(0);
+ case LL_IOC_GET_CONNECT_FLAGS: {
+ RETURN(obd_iocontrol(cmd, sbi->ll_md_exp, 0, NULL, (void*)arg));
+ }
case OBD_IOC_CHANGELOG_SEND:
case OBD_IOC_CHANGELOG_CLEAR:
rc = copy_and_ioctl(cmd, sbi->ll_md_exp, (void *)arg,
sizeof(*icc), icc, NULL);
break;
}
+ case LL_IOC_GET_CONNECT_FLAGS: {
+ rc = obd_iocontrol(cmd, lmv->tgts[0].ltd_exp, len, karg, uarg);
+ break;
+ }
default : {
for (i = 0; i < count; i++) {
GOTO(out, rc = 0);
}
+ case LL_IOC_GET_CONNECT_FLAGS: {
+ if (cfs_copy_to_user(uarg, &exp->exp_connect_flags, sizeof(__u64)))
+ GOTO(out, rc = -EFAULT);
+ else
+ GOTO(out, rc = 0);
+ }
default:
CERROR("mdc_ioctl(): unrecognised ioctl %#x\n", cmd);
GOTO(out, rc = -ENOTTY);
return 0;
}
+int llapi_get_connect_flags(const char *mnt, __u64 *flags)
+{
+ DIR *root;
+ int rc;
+ root = opendir(mnt);
+ if (!root) {
+ llapi_err(LLAPI_MSG_ERROR, "open %s failed", mnt);
+ return -1;
+ }
+ rc = ioctl(dirfd(root), LL_IOC_GET_CONNECT_FLAGS, flags);
+ closedir(root);
+ if (rc < 0)
+ llapi_err(LLAPI_MSG_ERROR,
+ "ioctl on %s for getting connect flags failed", mnt);
+ return rc;
+}