From owner-freebsd-current@FreeBSD.ORG Tue Mar 1 04:40:12 2011 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA89A1065673 for ; Tue, 1 Mar 2011 04:40:12 +0000 (UTC) (envelope-from lattera@gmail.com) Received: from mail-ww0-f50.google.com (mail-ww0-f50.google.com [74.125.82.50]) by mx1.freebsd.org (Postfix) with ESMTP id 048258FC0C for ; Tue, 1 Mar 2011 04:40:11 +0000 (UTC) Received: by wwb31 with SMTP id 31so5963952wwb.31 for ; Mon, 28 Feb 2011 20:40:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=G4Q72viGzCQ30ArH/37rHHMO00sc1pgRKLMveOAnaHw=; b=SNDMr2C7yy1spkUFmgjGY0GAyBQAmRVMQy3VQ/5G4GEmII3Z4KQMELcLesegss7hjN Rg+4i9ZyHtvpwQU8blBhJWfPjpYipQTK4gLtg7Jq0kcXCzTBfjIXAVFC6jQLEZ8RGiWK lo3xHBB2JZPJMErg5Kojk9NJSqNEC6YXgQOGo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=Eap+H/THoGLANJkLFpH4yFeClfY1xWSTbsHH9Kf1u+KdLg0u6+wjYlvZGizhunO2s6 ncznwhJgu4B2XzXsl3c8DZJT4aT8KvNFyQWO1AZrdTaw7tvzapQW9PHhDLoxWCtlLynM Y2BYRxJXuKdeiTNL/D4qRzTqBKBrsGoVKCMok= MIME-Version: 1.0 Received: by 10.227.7.93 with SMTP id c29mr3061468wbc.103.1298954410897; Mon, 28 Feb 2011 20:40:10 -0800 (PST) Received: by 10.227.127.68 with HTTP; Mon, 28 Feb 2011 20:40:10 -0800 (PST) In-Reply-To: References: Date: Mon, 28 Feb 2011 21:40:10 -0700 Message-ID: From: Shawn Webb To: FreeBSD-current Content-Type: multipart/mixed; boundary=002215b02cc23db270049d646457 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Re: setfacl Recursive Functionality X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Mar 2011 04:40:12 -0000 --002215b02cc23db270049d646457 Content-Type: text/plain; charset=ISO-8859-1 One last patch before I do a send-pr to send the patch upstream. This patch depends on my ZFS ACL Sets patch for the -k flag. I wanted to zero-out the ACL entries recursively for a directory, which I can do in Solaris with "chmod -R A= /path/to/directory", but ZFS doesn't allow zero-number ACL sets. To work around that, I'm giving owner@ full permissions (the full_set ACL set). I'll also include my ZFS ACL Sets patch. That has already been submitted upstream and I'm awaiting approval. Thanks, Shawn On Tue, Feb 8, 2011 at 10:58 AM, Shawn Webb wrote: > I've just finished a patch to add recursive functionality to setfacl. > Before I officially submit it, I'd like a few suggestions on how to improve > the patch. > > The part I'm worried about involves the #define directive at top. I'm not > sure what ramifications using that define might have. I needed it for my > remove_invalid_inherit() function to work. > > Thanks, > > Shawn > > attached: setfacl.patch (universal diff) > --002215b02cc23db270049d646457 Content-Type: application/octet-stream; name="setfacl_recursive.patch" Content-Disposition: attachment; filename="setfacl_recursive.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gkqbv5wr1 ZGlmZiAtLWdpdCBhL2Jpbi9zZXRmYWNsL3NldGZhY2wuYyBiL2Jpbi9zZXRmYWNsL3NldGZhY2wu YwppbmRleCBhMGY5MzdjLi4yNTMyMTg4IDEwMDY0NAotLS0gYS9iaW4vc2V0ZmFjbC9zZXRmYWNs LmMKKysrIGIvYmluL3NldGZhY2wvc2V0ZmFjbC5jCkBAIC0zMiw2ICszMiw4IEBAIF9fRkJTRElE KCIkRnJlZUJTRCQiKTsKICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgPHN5cy9hY2wu aD4KICNpbmNsdWRlIDxzeXMvcXVldWUuaD4KKyNpbmNsdWRlIDxmdHMuaD4KKyNpbmNsdWRlIDxk aXJlbnQuaD4KIAogI2luY2x1ZGUgPGVyci5oPgogI2luY2x1ZGUgPGVycm5vLmg+CkBAIC00NCw2 ICs0Niw4IEBAIF9fRkJTRElEKCIkRnJlZUJTRCQiKTsKIAogc3RhdGljIHZvaWQJYWRkX2ZpbGVu YW1lKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIHN0YXRpYyB2b2lkCXVzYWdlKHZvaWQpOworc3Rh dGljIHZvaWQJcmVjdXJzZV9kaXJlY3RvcnkoY2hhciAqY29uc3QgKnBhdGhzLCBpbnQgcl9mbGFn LCBpbnQgbF9mbGFnLCBpbnQgYmlnX2hfZmxhZyk7CitzdGF0aWMgYWNsX3QJcmVtb3ZlX2ludmFs aWRfaW5oZXJpdChjb25zdCBjaGFyICpwYXRoLCBhY2xfdCBhY2wsIGludCBsX2ZsYWcpOwogCiBz dGF0aWMgdm9pZAogYWRkX2ZpbGVuYW1lKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQpAQCAtNjIsMzQg KzY2LDExMiBAQCBhZGRfZmlsZW5hbWUoY29uc3QgY2hhciAqZmlsZW5hbWUpCiBzdGF0aWMgdm9p ZAogdXNhZ2Uodm9pZCkKIHsKLQotCWZwcmludGYoc3RkZXJyLCAidXNhZ2U6IHNldGZhY2wgWy1i ZGhrbl0gWy1hIHBvc2l0aW9uIGVudHJpZXNdICIKKwlmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiBz ZXRmYWNsIFstYmRoa0xuUl0gWy1hIHBvc2l0aW9uIGVudHJpZXNdICIKIAkgICAgIlstbSBlbnRy aWVzXSBbLU0gZmlsZV0gWy14IGVudHJpZXNdIFstWCBmaWxlXSBbZmlsZSAuLi5dXG4iKTsKIAll eGl0KDEpOwogfQogCitzdGF0aWMgdm9pZAorcmVjdXJzZV9kaXJlY3RvcnkoY2hhciAqY29uc3Qg KnBhdGhzLCBpbnQgcl9mbGFnLCBpbnQgbF9mbGFnLCBpbnQgYmlnX2hfZmxhZykKK3sKKwlGVFMg KmZ0c3A7CisJRlRTRU5UICpwLCAqY2hwOworCWludCBmdHNfb3B0aW9ucyA9IEZUU19OT0NIRElS OworCXVuc2lnbmVkIGludCBpOworCQorCWZ0c19vcHRpb25zIHw9IChsX2ZsYWcgPT0gMSkgPyBG VFNfTE9HSUNBTCA6IEZUU19QSFlTSUNBTDsKKwlpZiAoYmlnX2hfZmxhZykKKwkJZnRzX29wdGlv bnMgfD0gRlRTX0NPTUZPTExPVzsKKwkKKwlpZiAocl9mbGFnKQorCXsKKwkJZnRzcCA9IGZ0c19v cGVuKHBhdGhzLCBmdHNfb3B0aW9ucywgTlVMTCk7CisJCWlmIChmdHNwID09IE5VTEwpCisJCQly ZXR1cm47CisJCQorCQljaHAgPSBmdHNfY2hpbGRyZW4oZnRzcCwgMCk7CisJCWlmIChjaHAgPT0g TlVMTCkKKwkJCXJldHVybjsKKwkJCisJCXdoaWxlICgocCA9IGZ0c19yZWFkKGZ0c3ApKSAhPSBO VUxMKSB7CisJCQlpZiAobF9mbGFnID09IDAgJiYgcC0+ZnRzX2luZm8gJiBGVFNfRCkKKwkJCQlj b250aW51ZTsKKwkJCWVsc2UgaWYgKGxfZmxhZyA9PSAxICYmIHAtPmZ0c19pbmZvICYgRlRTX0RQ KQorCQkJCWNvbnRpbnVlOworCQkJCisJCQlhZGRfZmlsZW5hbWUoc3RyZHVwKHAtPmZ0c19wYXRo KSk7CisJCX0KKwkJCisJCWZ0c19jbG9zZShmdHNwKTsKKwl9IGVsc2UKKwkJZm9yIChpID0gMDsg cGF0aHNbaV0gIT0gTlVMTDsgaSsrKQorCQkJYWRkX2ZpbGVuYW1lKHBhdGhzW2ldKTsKK30KKwor c3RhdGljIGFjbF90CityZW1vdmVfaW52YWxpZF9pbmhlcml0KGNvbnN0IGNoYXIgKnBhdGgsIGFj bF90IGFjbCwgaW50IGxfZmxhZykKK3sKKwlhY2xfdCBhY2xfbmV3OworCWludCBhY2xfYnJhbmQ7 CisJYWNsX2VudHJ5X3QgZW50cnk7CisJaW50IGVudHJ5X2lkOworCWFjbF9mbGFnc2V0X3QgZmxh Z3NldDsKKwlzdHJ1Y3Qgc3RhdCBzYjsKKwkKKwlhY2xfZ2V0X2JyYW5kX25wKGFjbCwgJmFjbF9i cmFuZCk7CisJaWYgKGFjbF9icmFuZCAhPSBBQ0xfQlJBTkRfTkZTNCkKKwkJcmV0dXJuIGFjbDsK KwkKKwlpZiAobF9mbGFnID09IDEpIHsKKwkJaWYgKHN0YXQocGF0aCwgJnNiKSA9PSAtMSkKKwkJ CXJldHVybiBhY2w7CisJfSBlbHNlCisJCWlmIChsc3RhdChwYXRoLCAmc2IpID09IC0xKQorCQkJ cmV0dXJuIGFjbDsKKwkKKwlpZiAoU19JU0RJUihzYi5zdF9tb2RlKSAhPSAwKQorCQlyZXR1cm4g YWNsOworCQorCWFjbF9uZXcgPSBhY2xfZHVwKGFjbCk7CisJCisJZW50cnlfaWQgPSBBQ0xfRklS U1RfRU5UUlk7CisJd2hpbGUgKGFjbF9nZXRfZW50cnkoYWNsX25ldywgZW50cnlfaWQsICZlbnRy eSkgPT0gMSkgeworCQllbnRyeV9pZCA9IEFDTF9ORVhUX0VOVFJZOworCQlhY2xfZ2V0X2ZsYWdz ZXRfbnAoZW50cnksICZmbGFnc2V0KTsKKwkJaWYgKGFjbF9nZXRfZmxhZ19ucChmbGFnc2V0LCBB Q0xfRU5UUllfSU5IRVJJVF9PTkxZKSkgeworCQkJYWNsX2RlbGV0ZV9lbnRyeShhY2xfbmV3LCBl bnRyeSk7CisJCQljb250aW51ZTsKKwkJfQorCQlhY2xfZGVsZXRlX2ZsYWdfbnAoZmxhZ3NldCwg QUNMX0VOVFJZX0ZJTEVfSU5IRVJJVCB8IEFDTF9FTlRSWV9ESVJFQ1RPUllfSU5IRVJJVCB8IEFD TF9FTlRSWV9OT19QUk9QQUdBVEVfSU5IRVJJVCk7CisJfQorCQorCXJldHVybiBhY2xfbmV3Owor fQorCiBpbnQKIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKLQlhY2xfdCBhY2w7CisJ YWNsX3QgYWNsLCBhY2xfYmFja3VwOwogCWFjbF90eXBlX3QgYWNsX3R5cGU7CiAJY2hhciBmaWxl bmFtZVtQQVRIX01BWF07Ci0JaW50IGxvY2FsX2Vycm9yLCBjYXJyaWVkX2Vycm9yLCBjaCwgaSwg ZW50cnlfbnVtYmVyLCByZXQ7Ci0JaW50IGhfZmxhZzsKKwlpbnQgbG9jYWxfZXJyb3IsIGNhcnJp ZWRfZXJyb3IsIGNoLCBlbnRyeV9udW1iZXIsIHJldDsKKwlpbnQgaF9mbGFnLCByX2ZsYWcsIGxf ZmxhZywgYmlnX2hfZmxhZzsKIAlzdHJ1Y3Qgc2ZfZmlsZSAqZmlsZTsKIAlzdHJ1Y3Qgc2ZfZW50 cnkgKmVudHJ5OwotCWNvbnN0IGNoYXIgKmZuX2R1cDsKKwljaGFyICpmbl9kdXA7CiAJY2hhciAq ZW5kOworCWNoYXIgKipmaWxlcz1OVUxMOworCXVuc2lnbmVkIGludCBudW1maWxlcz0wOwogCXN0 cnVjdCBzdGF0IHNiOwogCiAJYWNsX3R5cGUgPSBBQ0xfVFlQRV9BQ0NFU1M7CiAJY2FycmllZF9l cnJvciA9IGxvY2FsX2Vycm9yID0gMDsKLQloX2ZsYWcgPSBoYXZlX21hc2sgPSBoYXZlX3N0ZGlu ID0gbl9mbGFnID0gbmVlZF9tYXNrID0gMDsKKwloX2ZsYWcgPSBoYXZlX21hc2sgPSBoYXZlX3N0 ZGluID0gbl9mbGFnID0gbmVlZF9tYXNrID0gcl9mbGFnID0gbF9mbGFnID0gYmlnX2hfZmxhZyA9 IDA7CiAKIAlUQUlMUV9JTklUKCZlbnRyeWxpc3QpOwogCVRBSUxRX0lOSVQoJmZpbGVsaXN0KTsK IAotCXdoaWxlICgoY2ggPSBnZXRvcHQoYXJnYywgYXJndiwgIk06WDphOmJkaGttOm54OiIpKSAh PSAtMSkKKwl3aGlsZSAoKGNoID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJITFJNOlg6YTpiZGhrbTpu eDoiKSkgIT0gLTEpCiAJCXN3aXRjaChjaCkgewogCQljYXNlICdNJzoKIAkJCWVudHJ5ID0gem1h bGxvYyhzaXplb2Yoc3RydWN0IHNmX2VudHJ5KSk7CkBAIC0xNjcsNiArMjQ5LDE1IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJCX0KIAkJCVRBSUxRX0lOU0VSVF9UQUlMKCZlbnRy eWxpc3QsIGVudHJ5LCBuZXh0KTsKIAkJCWJyZWFrOworCQljYXNlICdSJzoKKwkJCXJfZmxhZyA9 IDE7CisJCQlicmVhazsKKwkJY2FzZSAnTCc6CisJCQlsX2ZsYWcgPSAxOworCQkJYnJlYWs7CisJ CWNhc2UgJ0gnOgorCQkJYmlnX2hfZmxhZyA9IDE7CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJ CXVzYWdlKCk7CiAJCQlicmVhazsKQEAgLTE4OSwxMSArMjgwLDE4IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKmFyZ3ZbXSkKIAkJCWZuX2R1cCA9IHN0cmR1cChmaWxlbmFtZSk7CiAJCQlpZiAoZm5f ZHVwID09IE5VTEwpCiAJCQkJZXJyKDEsICJzdHJkdXAoKSBmYWlsZWQiKTsKLQkJCWFkZF9maWxl bmFtZShmbl9kdXApOworCQkJZmlsZXMgPSByZWFsbG9jKGZpbGVzLCArK251bWZpbGVzICogc2l6 ZW9mKGNoYXIgKiopKTsKKwkJCWlmIChmaWxlcyA9PSBOVUxMKQorCQkJCWVycigxLCAicmVhbGxv YygpIGZhaWxlZCIpOworCQkJZmlsZXNbbnVtZmlsZXMtMV0gPSAoY2hhciAqKWZuX2R1cDsKIAkJ fQorCQkKKwkJZmlsZXMgPSByZWFsbG9jKGZpbGVzLCArK251bWZpbGVzICogc2l6ZW9mKGNoYXIg KiopKTsKKwkJZmlsZXNbbnVtZmlsZXMtMV0gPSBOVUxMOwogCX0gZWxzZQotCQlmb3IgKGkgPSAw OyBpIDwgYXJnYzsgaSsrKQotCQkJYWRkX2ZpbGVuYW1lKGFyZ3ZbaV0pOworCQlmaWxlcyA9IGFy Z3Y7CisJCisJcmVjdXJzZV9kaXJlY3RvcnkoZmlsZXMsIHJfZmxhZywgbF9mbGFnLCBiaWdfaF9m bGFnKTsKIAogCS8qIGN5Y2xlIHRocm91Z2ggZWFjaCBmaWxlICovCiAJVEFJTFFfRk9SRUFDSChm aWxlLCAmZmlsZWxpc3QsIG5leHQpIHsKQEAgLTIwMSwxNCArMjk5LDEyIEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKmFyZ3ZbXSkKIAogCQlpZiAoc3RhdChmaWxlLT5maWxlbmFtZSwgJnNiKSA9PSAt MSkgewogCQkJd2FybigiJXM6IHN0YXQoKSBmYWlsZWQiLCBmaWxlLT5maWxlbmFtZSk7Ci0JCQlj YXJyaWVkX2Vycm9yKys7CiAJCQljb250aW51ZTsKIAkJfQogCiAJCWlmIChhY2xfdHlwZSA9PSBB Q0xfVFlQRV9ERUZBVUxUICYmIFNfSVNESVIoc2Iuc3RfbW9kZSkgPT0gMCkgewogCQkJd2Fybngo IiVzOiBkZWZhdWx0IEFDTCBtYXkgb25seSBiZSBzZXQgb24gYSBkaXJlY3RvcnkiLAogCQkJICAg IGZpbGUtPmZpbGVuYW1lKTsKLQkJCWNhcnJpZWRfZXJyb3IrKzsKIAkJCWNvbnRpbnVlOwogCQl9 CiAKQEAgLTIyMCw3ICszMTYsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQlp ZiAoYWNsX3R5cGUgPT0gQUNMX1RZUEVfREVGQVVMVCkgewogCQkJCXdhcm54KCIlczogdGhlcmUg YXJlIG5vIGRlZmF1bHQgZW50cmllcyAiCiAJCQkgICAgICAgICAgICJpbiBORlN2NCBBQ0xzIiwg ZmlsZS0+ZmlsZW5hbWUpOwotCQkJCWNhcnJpZWRfZXJyb3IrKzsKIAkJCQljb250aW51ZTsKIAkJ CX0KIAkJCWFjbF90eXBlID0gQUNMX1RZUEVfTkZTNDsKQEAgLTI0Myw3ICszMzgsNiBAQCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJCQllbHNlCiAJCQkJd2FybigiJXM6IGFjbF9nZXRf ZmlsZSgpIGZhaWxlZCIsCiAJCQkJICAgIGZpbGUtPmZpbGVuYW1lKTsKLQkJCWNhcnJpZWRfZXJy b3IrKzsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTI1NCwxMiArMzQ4LDI0IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAogCQkJc3dpdGNoKGVudHJ5LT5vcCkgewogCQkJY2FzZSBP UF9BRERfQUNMOgorCQkJCWFjbF9iYWNrdXAgPSBlbnRyeS0+YWNsOworCQkJCWVudHJ5LT5hY2wg PSByZW1vdmVfaW52YWxpZF9pbmhlcml0KGZpbGUtPmZpbGVuYW1lLCBlbnRyeS0+YWNsLCBsX2Zs YWcpOwogCQkJCWxvY2FsX2Vycm9yICs9IGFkZF9hY2woZW50cnktPmFjbCwKIAkJCQkgICAgZW50 cnktPmVudHJ5X251bWJlciwgJmFjbCwgZmlsZS0+ZmlsZW5hbWUpOworCQkJCWlmIChlbnRyeS0+ YWNsICE9IGFjbF9iYWNrdXApIHsKKwkJCQkJYWNsX2ZyZWUoZW50cnktPmFjbCk7CisJCQkJCWVu dHJ5LT5hY2wgPSBhY2xfYmFja3VwOworCQkJCX0KIAkJCQlicmVhazsKIAkJCWNhc2UgT1BfTUVS R0VfQUNMOgorCQkJCWFjbF9iYWNrdXAgPSBlbnRyeS0+YWNsOworCQkJCWVudHJ5LT5hY2wgPSBy ZW1vdmVfaW52YWxpZF9pbmhlcml0KGZpbGUtPmZpbGVuYW1lLCBlbnRyeS0+YWNsLCBsX2ZsYWcp OwogCQkJCWxvY2FsX2Vycm9yICs9IG1lcmdlX2FjbChlbnRyeS0+YWNsLCAmYWNsLAogCQkJCSAg ICBmaWxlLT5maWxlbmFtZSk7CisJCQkJaWYgKGVudHJ5LT5hY2wgIT0gYWNsX2JhY2t1cCkgewor CQkJCQlhY2xfZnJlZShlbnRyeS0+YWNsKTsKKwkJCQkJZW50cnktPmFjbCA9IGFjbF9iYWNrdXA7 CisJCQkJfQogCQkJCW5lZWRfbWFzayA9IDE7CiAJCQkJYnJlYWs7CiAJCQljYXNlIE9QX1JFTU9W RV9FWFQ6CkBAIC0yNjcsMjAgKzM3MywyMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10p CiAJCQkJbmVlZF9tYXNrID0gMDsKIAkJCQlicmVhazsKIAkJCWNhc2UgT1BfUkVNT1ZFX0RFRjoK LQkJCQlpZiAoYWNsX3R5cGUgPT0gQUNMX1RZUEVfTkZTNCkgewotCQkJCQl3YXJueCgiJXM6IHRo ZXJlIGFyZSBubyBkZWZhdWx0IGVudHJpZXMgaW4gTkZTdjQgQUNMczsgIgotCQkJCQkgICAgImNh bm5vdCByZW1vdmUiLCBmaWxlLT5maWxlbmFtZSk7Ci0JCQkJCWxvY2FsX2Vycm9yKys7Ci0JCQkJ CWJyZWFrOwotCQkJCX0KLQkJCQlpZiAoYWNsX2RlbGV0ZV9kZWZfZmlsZShmaWxlLT5maWxlbmFt ZSkgPT0gLTEpIHsKLQkJCQkJd2FybigiJXM6IGFjbF9kZWxldGVfZGVmX2ZpbGUoKSBmYWlsZWQi LAotCQkJCQkgICAgZmlsZS0+ZmlsZW5hbWUpOwotCQkJCQlsb2NhbF9lcnJvcisrOworCQkJCWlm IChhY2xfdHlwZSAhPSBBQ0xfVFlQRV9ORlM0KSB7CisJCQkJCWlmIChhY2xfZGVsZXRlX2RlZl9m aWxlKGZpbGUtPmZpbGVuYW1lKSA9PSAtMSkgeworCQkJCQkJd2FybigiJXM6IGFjbF9kZWxldGVf ZGVmX2ZpbGUoKSBmYWlsZWQiLAorCQkJCQkJCWZpbGUtPmZpbGVuYW1lKTsKKwkJCQkJCWxvY2Fs X2Vycm9yKys7CisJCQkJCX0KKwkJCQkJaWYgKGFjbF90eXBlID09IEFDTF9UWVBFX0RFRkFVTFQp CisJCQkJCQlsb2NhbF9lcnJvciArPSByZW1vdmVfZGVmYXVsdCgmYWNsLAorCQkJCQkJCWZpbGUt PmZpbGVuYW1lKTsKKwkJCQl9IGVsc2UgeworCQkJCQkvKiBGcmVlQlNEIGRvZXMgbm90IHN1cHBv cnQgYSB6ZXJvIGFtb3VudCBvZiBBQ0wgZW50cmllcyBsaWtlIFNvbGFyaXMsIGdpdmUgb3duZXJA IGZ1bGwgcGVybWlzc2lvbnMgKi8KKwkJCQkJYWNsX2ZyZWUoYWNsKTsKKwkJCQkJYWNsID0gYWNs X2Zyb21fdGV4dCgib3duZXJAOmZ1bGxfc2V0OjphbGxvdyIpOwogCQkJCX0KLQkJCQlpZiAoYWNs X3R5cGUgPT0gQUNMX1RZUEVfREVGQVVMVCkKLQkJCQkJbG9jYWxfZXJyb3IgKz0gcmVtb3ZlX2Rl ZmF1bHQoJmFjbCwKLQkJCQkJICAgIGZpbGUtPmZpbGVuYW1lKTsKIAkJCQluZWVkX21hc2sgPSAw OwogCQkJCWJyZWFrOwogCQkJY2FzZSBPUF9SRU1PVkVfQUNMOgo= --002215b02cc23db270049d646457 Content-Type: application/octet-stream; name="zfs_acl_set.patch" Content-Disposition: attachment; filename="zfs_acl_set.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gkqbw7b82 Ci0tLSByZWxlbmdfOF8yL3NyYy9saWIvbGliYy9wb3NpeDFlL2FjbF9zdXBwb3J0X25mczQuYwky MDEwLTEyLTIxIDEwOjA5OjI1LjAwMDAwMDAwMCAtMDcwMAorKysgc3JjL2xpYi9saWJjL3Bvc2l4 MWUvYWNsX3N1cHBvcnRfbmZzNC5jCTIwMTEtMDEtMTEgMTA6NTE6MTEuMDAwMDAwMDAwIC0wNzAw CkBAIC0xNDQsMTMgKzE0NCwzOCBAQAogCiAJd2hpbGUgKHN0ciAhPSBOVUxMKSB7CiAJCWZsYWcg PSBzdHJzZXAoJnN0ciwgIi86Iik7Ci0KIAkJZm91bmQgPSAwOwotCQlmb3IgKGkgPSAwOyBmbGFn c1tpXS5uYW1lICE9IE5VTEw7IGkrKykgewotCQkJaWYgKHN0cmNtcChmbGFnc1tpXS5uYW1lLCBm bGFnKSA9PSAwKSB7CisKKwkJaWYgKGZsYWdzID09IGFfYWNjZXNzX21hc2tzICYmIHN0cmNtcCgi ZnVsbF9zZXQiLCBmbGFnKSA9PSAwKSB7CisJCQlmb3IgKGkgPSAwOyBmbGFnc1tpXS5uYW1lICE9 IE5VTEw7IGkrKykKIAkJCQkqdmFyIHw9IGZsYWdzW2ldLmZsYWc7Ci0JCQkJZm91bmQgPSAxOwot CQkJCWV2ZXJfZm91bmQgPSAxOworCQkJZm91bmQgPSAxOworCQkJZXZlcl9mb3VuZCA9IDE7CisJ CX0KKwkJZWxzZSBpZiAoZmxhZ3MgPT0gYV9hY2Nlc3NfbWFza3MgJiYgc3RyY21wKCJyZWFkX3Nl dCIsIGZsYWcpID09IDApIHsKKwkJCSp2YXIgfD0gKEFDTF9SRUFEX0RBVEEgfCBBQ0xfUkVBRF9B VFRSSUJVVEVTIHwgQUNMX1JFQURfTkFNRURfQVRUUlMgfCBBQ0xfUkVBRF9BQ0wpOworCQkJZm91 bmQgPSAxOworCQkJZXZlcl9mb3VuZCA9IDE7CisJCX0KKwkJZWxzZSBpZiAoZmxhZ3MgPT0gYV9h Y2Nlc3NfbWFza3MgJiYgc3RyY21wKCJ3cml0ZV9zZXQiLCBmbGFnKSA9PSAwKSB7CisJCQkqdmFy IHw9IChBQ0xfV1JJVEVfREFUQSB8IEFDTF9BUFBFTkRfREFUQSB8IEFDTF9XUklURV9BVFRSSUJV VEVTIHwgQUNMX1dSSVRFX05BTUVEX0FUVFJTKTsKKwkJCWZvdW5kID0gMTsKKwkJCWV2ZXJfZm91 bmQgPSAxOworCQl9CisJCWVsc2UgaWYgKGZsYWdzID09IGFfYWNjZXNzX21hc2tzICYmIHN0cmNt cCgibW9kaWZ5X3NldCIsIGZsYWcpID09IDApIHsKKwkJCWZvciAoaSA9IDA7IGZsYWdzW2ldLm5h bWUgIT0gTlVMTDsgaSsrKQorCQkJCWlmIChmbGFnc1tpXS5mbGFnICE9IEFDTF9XUklURV9BQ0wg fHwgZmxhZ3NbaV0uZmxhZyAhPSBBQ0xfV1JJVEVfT1dORVIpCisJCQkJCSp2YXIgfD0gZmxhZ3Nb aV0uZmxhZzsKKwkJCWZvdW5kID0gMTsKKwkJCWV2ZXJfZm91bmQgPSAxOworCQl9CisJCWVsc2Ug eworCQkJZm9yIChpID0gMDsgZmxhZ3NbaV0ubmFtZSAhPSBOVUxMOyBpKyspIHsKKwkJCQlpZiAo c3RyY21wKGZsYWdzW2ldLm5hbWUsIGZsYWcpID09IDApIHsKKwkJCQkJKnZhciB8PSBmbGFnc1tp XS5mbGFnOworCQkJCQlmb3VuZCA9IDE7CisJCQkJCWV2ZXJfZm91bmQgPSAxOworCQkJCX0KIAkJ CX0KIAkJfQogCgoK --002215b02cc23db270049d646457--