diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2020-07-01 16:27:16 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2020-07-01 16:40:49 -0400 |
commit | 04818f1e83ab633f99df720a675494303ba26301 (patch) | |
tree | 216b95e05b9d5fdab622712b5e44fccd41e4b354 | |
parent | 00bac487b0f105a875819faaa6bc0e450b80650a (diff) |
foodebug
-rw-r--r-- | quotasys.c | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -935,18 +935,23 @@ struct quota_handle **create_handle_list(int count, char **mntpoints, int type, if (init_mounts_scan(count, mntpoints, mntflags) < 0) die(2, _("Cannot initialize mountpoint scan.\n")); while ((mnt = get_next_mount())) { + printf("got type %s at %s\n", mnt->me_type, mnt->me_dir); + #ifndef RPC if (nfs_fstype(mnt->me_type)) continue; #endif if (fmt == -1 || count) { add_entry: + printf("adding type %s at %s\n", mnt->me_type, mnt->me_dir); if (gotmnt+1 >= hlist_allocated) { hlist_allocated += START_MNT_POINTS; hlist = srealloc(hlist, hlist_allocated * sizeof(struct quota_handle *)); } if (!(hlist[gotmnt] = init_io(mnt, type, fmt, ioflags))) continue; + + printf("added type %s at %s\n", mnt->me_type, mnt->me_dir); gotmnt++; } else { @@ -1278,8 +1283,11 @@ alloc: char *opt; int qfmt[MAXQUOTAS]; + printf("saw %s %s %s\n", mnt->mnt_fsname, mnt->mnt_dir, mnt->mnt_type); + if (!(devname = get_device_name(mnt->mnt_fsname))) { errstr(_("Cannot get device name for %s\n"), mnt->mnt_fsname); + printf("skip1\n"); continue; } @@ -1301,9 +1309,10 @@ alloc: } if (i < autofsdircnt) { free((char *)devname); + printf("skip2\n"); continue; } - + if (flags & MS_NO_AUTOFS && !strcmp(mnt->mnt_type, MNTTYPE_AUTOFS)) { /* Autofs dir to remember? */ if (autofsdircnt == autofsdir_allocated) { autofsdir_allocated += ALLOC_ENTRIES_NUM; @@ -1314,19 +1323,23 @@ alloc: strcat(autofsdir[autofsdircnt], "/"); autofsdircnt++; free((char *)devname); + printf("skip3\n"); continue; } if (flags & MS_LOCALONLY && nfs_fstype(mnt->mnt_type)) { free((char *)devname); + printf("skip4\n"); continue; } if (hasmntopt(mnt, MNTOPT_NOQUOTA)) { free((char *)devname); + printf("skip5\n"); continue; } if (hasmntopt(mnt, MNTOPT_BIND)) { free((char *)devname); + printf("skip6\n"); continue; /* We just ignore bind mounts... */ } if ((opt = hasmntoptarg(mnt->mnt_opts, MNTOPT_LOOP))) { @@ -1344,23 +1357,27 @@ alloc: if (qfmt[USRQUOTA] < 0 && qfmt[GRPQUOTA] < 0 && qfmt[PRJQUOTA] < 0) { free((char *)devname); + printf("skip7\n"); continue; } if (!realpath(mnt->mnt_dir, mntpointbuf)) { errstr(_("Cannot resolve mountpoint path %s: %s\n"), mnt->mnt_dir, strerror(errno)); free((char *)devname); + printf("skip8\n"); continue; } if (statfs(mntpointbuf, &fsstat) != 0) { errstr(_("Cannot statfs() %s: %s\n"), mntpointbuf, strerror(errno)); free((char *)devname); + printf("skip9\n"); continue; } /* Do not scan quotas on "magic" automount points */ if (fsstat.f_blocks == 0 && fsstat.f_bfree == 0 && fsstat.f_bavail == 0) { free((char *)devname); + printf("skip10\n"); continue; } @@ -1368,11 +1385,13 @@ alloc: if (stat(devname, &st) < 0) { /* Can't stat mounted device? */ errstr(_("Cannot stat() mounted device %s: %s\n"), devname, strerror(errno)); free((char *)devname); + printf("skip10\n"); continue; } if (!S_ISBLK(st.st_mode) && !S_ISCHR(st.st_mode)) { errstr(_("Device (%s) filesystem is mounted on unsupported device type. Skipping.\n"), devname); free((char *)devname); + printf("skip11\n"); continue; } dev = st.st_rdev; @@ -1383,6 +1402,7 @@ alloc: if (stat(mnt->mnt_dir, &st) < 0) { /* Can't stat mountpoint? We have better ignore it... */ errstr(_("Cannot stat() mountpoint %s: %s\n"), mnt->mnt_dir, strerror(errno)); free((char *)devname); + printf("skip12\n"); continue; } if (nfs_fstype(mnt->mnt_type)) { @@ -1548,7 +1568,14 @@ restart: if (++act_checked == check_dirs_cnt) return 0; sd = check_dirs + act_checked; + printf("searching for %u %lu %lu %s\n", + sd->sd_dir, sd->sd_dev, sd->sd_ino, sd->sd_name); + for (i = 0; i < mnt_entries_cnt; i++) { + printf("comparing against %lu %lu %s\n", + mnt_entries[i].me_dev, + mnt_entries[i].me_ino, + mnt_entries[i].me_dir); if (sd->sd_dir) { if (sd->sd_dev == mnt_entries[i].me_dev && sd->sd_ino == mnt_entries[i].me_ino) break; |