extern int open_by_handle (void *__hanp, size_t __hlen, int __rw);
extern int readlink_by_handle (void *__hanp, size_t __hlen, void *__buf,
size_t __bs);
+extern int fssetdm_by_handle (void *__hanp, size_t __hlen,
+ struct fsdmidata *__fsdmi);
#ifdef __cplusplus
}
#endif /* __KERNEL__ */
/*
- * Structure for F_FSSETDM.
+ * Structure for XFS_IOC_FSSETDM.
* For use by backup and restore programs to set the XFS on-disk inode
* fields di_dmevmask and di_dmstate. These must be set to exactly and
* only values previously obtained via xfs_bulkstat! (Specifically the
typedef struct xfs_fsop_setdm_handlereq {
struct xfs_fsop_handlereq hreq; /* handle request interface */
/* structure */
- struct fsdmidata data; /* DMI data to set */
+ struct fsdmidata *data; /* DMAPI data to set */
} xfs_fsop_setdm_handlereq_t;
/*
return (int) ioctl(fd, XFS_IOC_READLINK_BY_HANDLE, &hreq);
}
+int
+fssetdm_by_handle (
+ void *hanp,
+ size_t hlen,
+ struct fsdmidata *fsdmidata)
+{
+ int fd;
+ xfs_fsop_setdm_handlereq_t dmhreq;
+
+
+ if ((fd = handle_to_fsfd(hanp)) < 0) {
+ errno = EBADF;
+ return -1;
+ }
+
+ dmhreq.hreq.fd = 0;
+ dmhreq.hreq.path = NULL;
+ dmhreq.hreq.oflags = 0;
+ dmhreq.hreq.ihandle = hanp;
+ dmhreq.hreq.ihandlen = hlen;
+ dmhreq.hreq.ohandle = NULL;
+ dmhreq.hreq.ohandlen = NULL;
+
+ dmhreq.data = fsdmidata;
+
+ return (int) ioctl(fd, XFS_IOC_FSSETDM_BY_HANDLE, &dmhreq);
+}
+
/*ARGSUSED*/
void
free_handle (