ret = ioctl(fd, BTRFS_IOC_SPACE_INFO, sargs);
if (ret < 0) {
- error("cannot get space info: %s", strerror(errno));
+ error("cannot get space info: %m");
free(sargs);
return -errno;
}
sargs->total_spaces = 0;
ret = ioctl(fd, BTRFS_IOC_SPACE_INFO, sargs);
if (ret < 0) {
- error("cannot get space info with %llu slots: %s",
- count, strerror(errno));
+ error("cannot get space info with %llu slots: %m",
+ count);
free(sargs);
return -errno;
}
return !!ret;
}
-static int match_search_item_kernel(__u8 *fsid, char *mnt, char *label,
+static int match_search_item_kernel(u8 *fsid, char *mnt, char *label,
char *search)
{
char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
static int uuid_search(struct btrfs_fs_devices *fs_devices, const char *search)
{
char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
- struct list_head *cur;
struct btrfs_device *device;
int search_len = strlen(search);
if (!strncmp(uuidbuf, search, search_len))
return 1;
- list_for_each(cur, &fs_devices->devices) {
- device = list_entry(cur, struct btrfs_device, dev_list);
+ list_for_each_entry(device, &fs_devices->devices, dev_list) {
if ((device->label && strcmp(device->label, search) == 0) ||
strcmp(device->name, search) == 0)
return 1;
int type = 0;
char mp[PATH_MAX];
char path[PATH_MAX];
- __u8 fsid[BTRFS_FSID_SIZE];
+ u8 fsid[BTRFS_FSID_SIZE];
char uuid_buf[BTRFS_UUID_UNPARSED_SIZE];
unsigned unit_mode;
int found = 0;
static int cmd_filesystem_sync(int argc, char **argv)
{
- int fd, res, e;
+ int fd, res;
char *path;
DIR *dirstream = NULL;
return 1;
res = ioctl(fd, BTRFS_IOC_SYNC);
- e = errno;
close_file_or_dir(fd, dirstream);
if( res < 0 ){
- error("sync ioctl failed on '%s': %s", path, strerror(e));
+ error("sync ioctl failed on '%s': %m", path);
return 1;
}
int typeflag, struct FTW *ftwbuf)
{
int ret = 0;
- int err = 0;
int fd = 0;
if ((typeflag == FTW_F) && S_ISREG(sb->st_mode)) {
printf("%s\n", fpath);
fd = open(fpath, O_RDWR);
if (fd < 0) {
- err = errno;
goto error;
}
ret = ioctl(fd, BTRFS_IOC_DEFRAG_RANGE, &defrag_global_range);
return ENOTTY;
}
if (ret) {
- err = errno;
goto error;
}
}
return 0;
error:
- error("defrag failed on %s: %s", fpath, strerror(err));
+ error("defrag failed on %s: %m", fpath);
defrag_global_errors++;
return 0;
}
dirstream = NULL;
fd = open_file_or_dir(argv[i], &dirstream);
if (fd < 0) {
- error("cannot open %s: %s", argv[i],
- strerror(errno));
- defrag_global_errors++;
- close_file_or_dir(fd, dirstream);
- continue;
+ error("cannot open %s: %m", argv[i]);
+ ret = -errno;
+ goto next;
}
- if (fstat(fd, &st)) {
- error("failed to stat %s: %s",
- argv[i], strerror(errno));
- defrag_global_errors++;
- close_file_or_dir(fd, dirstream);
- continue;
+
+ ret = fstat(fd, &st);
+ if (ret) {
+ error("failed to stat %s: %m", argv[i]);
+ ret = -errno;
+ goto next;
}
if (!(S_ISDIR(st.st_mode) || S_ISREG(st.st_mode))) {
error("%s is not a directory or a regular file",
argv[i]);
- defrag_global_errors++;
- close_file_or_dir(fd, dirstream);
- continue;
+ ret = -EINVAL;
+ goto next;
}
if (recursive && S_ISDIR(st.st_mode)) {
ret = nftw(argv[i], defrag_callback, 10,
ret = ioctl(fd, BTRFS_IOC_DEFRAG_RANGE,
&defrag_global_range);
defrag_err = errno;
- }
- close_file_or_dir(fd, dirstream);
- if (ret && defrag_err == ENOTTY) {
- error(
+ if (ret && defrag_err == ENOTTY) {
+ error(
"defrag range ioctl not supported in this kernel version, 2.6.33 and newer is required");
- defrag_global_errors++;
- break;
+ defrag_global_errors++;
+ close_file_or_dir(fd, dirstream);
+ break;
+ }
+ if (ret) {
+ error("defrag failed on %s: %s", argv[i],
+ strerror(defrag_err));
+ goto next;
+ }
}
- if (ret) {
- error("defrag failed on %s: %s", argv[i],
- strerror(defrag_err));
+next:
+ if (ret)
defrag_global_errors++;
- }
+ close_file_or_dir(fd, dirstream);
}
+
if (defrag_global_errors)
fprintf(stderr, "total %d failures\n", defrag_global_errors);
res = stat(path, &st);
if (res < 0) {
- error("resize: cannot stat %s: %s", path, strerror(errno));
+ error("resize: cannot stat %s: %m", path);
return 1;
}
if (!S_ISDIR(st.st_mode)) {
path);
break;
default:
- error("unable to resize '%s': %s", path, strerror(e));
+ error("unable to resize '%s': %m", path);
break;
}
return 1;