~ubuntu-branches/ubuntu/quantal/linux-lowlatency/quantal-proposed

« back to all changes in this revision

Viewing changes to ubuntu/aufs/whout.c

  • Committer: Package Import Robot
  • Author(s): Andy Whitcroft, Andy Whitcroft, Ubuntu: 3.5.0-8.8
  • Date: 2012-08-06 10:01:03 UTC
  • Revision ID: package-import@ubuntu.com-20120806100103-fy2yfj838x8zqvkp
Tags: 3.5.0-8.7
[ Andy Whitcroft ]

* [Config] add update-from-master script
* rebase to Ubuntu-3.5.0-8.8

[ Ubuntu: 3.5.0-8.8 ]

* ubuntu: AUFS -- add BOM and automated update script
* ubuntu: AUFS -- include the aufs_types.h file in linux-libc-headers
  - LP: #684666
* ubuntu: AUFS -- update aufs-update to track new locations of headers
* ubuntu: AUFS -- clean up the aufs updater and BOM
* ubuntu: AUFS -- documentation on updating aufs2
* ubuntu: AUFS -- fix undefined __devcgroup_inode_permission
* ubuntu: AUFS -- update to 4cf5db36bcd9748e8e7270022f295f84d1fc2245
* ubuntu: AUFS -- updateconfigs following update
* ubuntu: AUFS -- suppress benign plink warning messages
  - LP: #621195
* ubuntu: AUFS -- enable in config and makefile
* ubuntu: AUFS -- disable in favor of overlayfs
* ubuntu: AUFS -- adapt to the new changelog handling
* ubuntu: AUFS -- sort out the relative header paths
* ubuntu: AUFS -- update to d266b0c5d0693d6383976ee54b9e2c0fa9a3f5b0
* ubuntu: AUFS -- aufs3-base.patch
* ubuntu: AUFS -- aufs3-standalone.patch
* ubuntu: AUFS -- update to 4a5e660ed7f5c1d0467c81c535d0fedcfe62d15f
* ubuntu: AUFS -- reenable
* [Config] Add cifs support to the nfs-modules list
  - LP: #1031398
* (pre-stable) iwlwifi: Check BSS ctx active before call mac80211
  - LP: #1021086
* SAUCE: Update aufs for build failure caused by apparmor backport
* SAUCE: firmware: Remove ess files duplicated in linux-firmware
* SAUCE: firmware: Remove kaweth files duplicated in linux-firmware
* SAUCE: firmware: Remove obsolete Chelsio cxgb3 firmware
* SAUCE: firmware: Remove cxgb3 files duplicated in linux-firmware
* SAUCE: firmware: Remove edgeport files duplicated in linux-firmware
* SAUCE: firmware: Remove ti_usb_3410_5052 duplicated in linux-firmware
* SAUCE: firmware: Remove adaptec files duplicated in linux-firmware
* SAUCE: firmware: Remove advansys files duplicated in linux-firmware
* SAUCE: firmware: Remove ambassador files duplicated in linux-firmware
* SAUCE: firmware: Remove av7110 files duplicated in linux-firmware
* SAUCE: cpia2: Declare MODULE_FIRMWARE usage
* SAUCE: firmware: Remove cpia2 files duplicated in linux-firmware
* SAUCE: firmware: Remove korg files duplicated in linux-firmware
* SAUCE: firmware: Remove matrox files duplicated in linux-firmware
* SAUCE: firmware: Remove r128 files duplicated in linux-firmware
* SAUCE: firmware: Remove radeon files duplicated in linux-firmware
* intel_idle: initial IVB support
* KVM: x86: change PT_FIRST_AVAIL_BITS_SHIFT to avoid conflict with EPT
  Dirty bit
* KVM: VMX: Use EPT Access bit in response to memory notifiers
* KVM: VMX: Enable EPT A/D bits if supported by turning on relevant bit
  in EPTP
* KVM: VMX: Add parameter to control A/D bits support, default is on
* KVM: VMX: Add EPT A/D bits definitions
* KVM: VMX: Implement PCID/INVPCID for guests with EPT
* xhci: Export Latency Tolerance Messaging capabilities.
* USB: Fix LPM disable/enable during device reset.
* usb: convert port_owners type from void * to struct dev_state *
* USB: Disable LPM while the device is unconfigured.
* USB: Fix LPM disable count mismatch on driver unbind.
* USB: Enable Latency Tolerance Messaging (LTM).
* drm/i915: enable parity error interrupts
* drm/i915: Dynamic Parity Detection handling
* drm/i915: l3 parity sysfs interface
* drm/i915: remap l3 on hw init
* drm/i915: initialize the parity work only once
* drm/i915: ivybridge_handle_parity_error should be static

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 * If a directory contains this file, then it is opaque.  We start with the
29
29
 * .wh. flag so that it is blocked by lookup.
30
30
 */
31
 
static struct qstr diropq_name = {
32
 
        .name = AUFS_WH_DIROPQ,
33
 
        .len = sizeof(AUFS_WH_DIROPQ) - 1
34
 
};
 
31
static struct qstr diropq_name = QSTR_INIT(AUFS_WH_DIROPQ,
 
32
                                           sizeof(AUFS_WH_DIROPQ) - 1);
35
33
 
36
34
/*
37
35
 * generate whiteout name, which is NOT terminated by NULL.
156
154
                        goto out_name;
157
155
                dput(dentry);
158
156
        }
159
 
        /* pr_warning("could not get random name\n"); */
 
157
        /* pr_warn("could not get random name\n"); */
160
158
        dentry = ERR_PTR(-EEXIST);
161
159
        AuDbg("%.*s\n", AuLNPair(&qs));
162
160
        BUG();
214
212
         * this may be a violation of unix fs semantics.
215
213
         */
216
214
        force = (h_dir->i_mode & S_ISVTX)
217
 
                && h_path->dentry->d_inode->i_uid != current_fsuid();
 
215
                && !uid_eq(current_fsuid(), h_path->dentry->d_inode->i_uid);
218
216
        return vfsub_unlink(h_dir, h_path, force);
219
217
}
220
218
 
274
272
                mnt_drop_write(whpath->mnt);
275
273
        }
276
274
        if (unlikely(err))
277
 
                pr_warning("failed removing %.*s (%d), ignored.\n",
278
 
                           AuDLNPair(whpath->dentry), err);
 
275
                pr_warn("failed removing %.*s (%d), ignored.\n",
 
276
                        AuDLNPair(whpath->dentry), err);
279
277
}
280
278
 
281
279
static int test_linkable(struct dentry *h_root)
448
446
        struct inode *h_dir;
449
447
        struct au_wbr *wbr = br->br_wbr;
450
448
        static const struct qstr base_name[] = {
451
 
                [AuBrWh_BASE] = {
452
 
                        .name   = AUFS_BASE_NAME,
453
 
                        .len    = sizeof(AUFS_BASE_NAME) - 1
454
 
                },
455
 
                [AuBrWh_PLINK] = {
456
 
                        .name   = AUFS_PLINKDIR_NAME,
457
 
                        .len    = sizeof(AUFS_PLINKDIR_NAME) - 1
458
 
                },
459
 
                [AuBrWh_ORPH] = {
460
 
                        .name   = AUFS_ORPHDIR_NAME,
461
 
                        .len    = sizeof(AUFS_ORPHDIR_NAME) - 1
462
 
                }
 
449
                [AuBrWh_BASE] = QSTR_INIT(AUFS_BASE_NAME,
 
450
                                          sizeof(AUFS_BASE_NAME) - 1),
 
451
                [AuBrWh_PLINK] = QSTR_INIT(AUFS_PLINKDIR_NAME,
 
452
                                           sizeof(AUFS_PLINKDIR_NAME) - 1),
 
453
                [AuBrWh_ORPH] = QSTR_INIT(AUFS_ORPHDIR_NAME,
 
454
                                          sizeof(AUFS_ORPHDIR_NAME) - 1)
463
455
        };
464
456
        struct au_wh_base base[] = {
465
457
                [AuBrWh_BASE] = {
579
571
                        mnt_drop_write(a->br->br_mnt);
580
572
                }
581
573
        } else {
582
 
                pr_warning("%.*s is moved, ignored\n",
583
 
                           AuDLNPair(wbr->wbr_whbase));
 
574
                pr_warn("%.*s is moved, ignored\n",
 
575
                        AuDLNPair(wbr->wbr_whbase));
584
576
                err = 0;
585
577
        }
586
578
        dput(wbr->wbr_whbase);
971
963
                return 0; /* success */
972
964
        }
973
965
 
974
 
        pr_warning("failed removing %.*s(%d), ignored\n",
975
 
                   AuDLNPair(wh_dentry), err);
 
966
        pr_warn("failed removing %.*s(%d), ignored\n",
 
967
                AuDLNPair(wh_dentry), err);
976
968
        return err;
977
969
}
978
970
 
1042
1034
        args->wh_dentry = dget(wh_dentry);
1043
1035
        wkq_err = au_wkq_nowait(call_rmdir_whtmp, args, sb, /*flags*/0);
1044
1036
        if (unlikely(wkq_err)) {
1045
 
                pr_warning("rmdir error %.*s (%d), ignored\n",
1046
 
                           AuDLNPair(wh_dentry), wkq_err);
 
1037
                pr_warn("rmdir error %.*s (%d), ignored\n",
 
1038
                        AuDLNPair(wh_dentry), wkq_err);
1047
1039
                au_whtmp_rmdir_free(args);
1048
1040
        }
1049
1041
}