From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1PGSxR-0003UL-DJ for mharc-grub-devel@gnu.org; Thu, 11 Nov 2010 03:56:37 -0500 Received: from [140.186.70.92] (port=36350 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PGSxO-0003R4-3r for grub-devel@gnu.org; Thu, 11 Nov 2010 03:56:35 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PGSxM-0000by-4S for grub-devel@gnu.org; Thu, 11 Nov 2010 03:56:33 -0500 Received: from mail-iw0-f169.google.com ([209.85.214.169]:64725) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PGSxL-0000bP-Ro for grub-devel@gnu.org; Thu, 11 Nov 2010 03:56:32 -0500 Received: by iwn9 with SMTP id 9so2129641iwn.0 for ; Thu, 11 Nov 2010 00:56:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:content-type; bh=HNaPi78S3MHY3nbJBYb6CZ/pXwcVUjAKBdQ/ZS5/wnw=; b=BIggXSfJ5/nw2fmbCFa1ruAGeOEo8iMxzI0bhQZfD1Ux53KttD+yVtAQIIvstcSLVH OY2XshES+JKNv/QEKQ48P2lh2simxtI7XJERmWtBfOQKhlS6G1RZq6fhExFYjPjPJsVy GOIWVEK/YweQP2k/QoCeOSlyo6hGPtpAbBxp8= 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=KU0NMjklBQIvc1jOnIW/iQIx9UoVbki6NJ/jUDvLKV9lEqOp8CE7ILQRAb0D7BjIg9 mc27Kg5DJowuAFNmHiwYlYdPBlA0dBjm0Ei+KWpDiD69szb9J1aNGQOcyHd/Aou20r3P z/gRmgzMIEDzxfef3RwtqDmoccC5KOJbWF8Io= MIME-Version: 1.0 Received: by 10.42.212.4 with SMTP id gq4mr390684icb.319.1289465789897; Thu, 11 Nov 2010 00:56:29 -0800 (PST) Received: by 10.42.173.132 with HTTP; Thu, 11 Nov 2010 00:56:29 -0800 (PST) In-Reply-To: <4CD5B3B7.1070006@gmail.com> References: <4CD5B3B7.1070006@gmail.com> Date: Thu, 11 Nov 2010 09:56:29 +0100 Message-ID: From: Giuseppe Caizzone To: The development of GNU GRUB Content-Type: multipart/mixed; boundary=20cf301d44145b5a730494c32663 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) Subject: Re: UDF filesystem fixes for grub X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GNU GRUB List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Nov 2010 08:56:35 -0000 --20cf301d44145b5a730494c32663 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable 2010/11/6 Vladimir '=CF=86-coder/phcoder' Serbinenko : > On 11/02/2010 02:10 PM, Giuseppe Caizzone wrote: >> Hello, >> >> I've made 4 small patches that improve the UDF filesystem support in >> grub. With these changes, I've been able to read any regular file in >> UDF filesystems created by both Linux and Windows on both optical >> storage and USB sticks. >> [...] >> 1/4) Support for large (> 2GiB) files >> [...] >> The patch just changes an int and a grub_uint32_t to be grub_off_t. >> >> > Good patch. Can you write the ChangeLog entry for it? OK - I've never written one, so I tried to mimic grub's. Support reading files larger than 2 GiB. * grub-core/fs/udf.c (grub_udf_iterate_dir): change type of variable "offset" from grub_uint32_t to grub_off_t. (grub_udf_read_file): change type of parameter "pos" from int to grub_off_t. >> 2/4) Support for deleted files >> [...] >> The patch just skips directory entries with the "deleted" bit set, in >> grub_udf_iterate_dir(). >> >> > This one is good too. Changelog entry? Properly handle deleted files. * grub-core/fs/udf.c (grub_udf_iterate_dir): Skip directory entries whose "characteristics" field has the bit GRUB_UDF_FID_CHAR_DELETED set. >> 3/4) Support for a generic block size >> [...] >> The patch repeats the superblock search in grub_udf_mount() for 512, >> 1024, 2048 and 4096 block sizes, stopping if it finds a valid one AND >> the sector offset recorded in that superblock matches the detected >> superblock offset. So for instance it won't misdetect a superblock >> located at sector 256 with blocksize 2048 for a superblock located at >> sector 512 with blocksize 1024. >> The log2(blocksize/512) is then stored in a new field called "lbshift" >> in struct grub_udf_data, which gets used instead of the previous >> constant GRUB_UDF_LOG2_BLKSZ, while the constant GRUB_UDF_BLKSZ gets >> replaced with the lvd.bsize field already present in struct >> grub_udf_data. >> >> > + =C2=A0lbshift =3D 0; > + =C2=A0block =3D 0; > + =C2=A0while (lbshift <=3D 3) > + =C2=A0 =C2=A0{ > For loop is way more appropriate than a while loop Changed it into a for loop. > + =C2=A0while (lbshift <=3D 3) > + =C2=A0 =C2=A0{ > + =C2=A0 =C2=A0 =C2=A0sblklist =3D sblocklist; > + =C2=A0 =C2=A0 =C2=A0while (*sblklist) > + =C2=A0 =C2=A0 =C2=A0 =C2=A0{ > Same here. Changed that too. I also made another change since the previous version of the patch: I moved the VRS check after the AVDP search, because it needs to know the logical block size. I originally thought that it wasn't necessary, because the VRS is made up of records with a fixed size of 2048 bytes, but the catch is that the standard says that each record must start on a new sector, so if block size is > 2048, one has to skip more bytes than 2048 to get to the next record. Tested it with mkudffs because I have no medium with an actual block size of 4096. > ChangeLog entry? Add generic logical block size support. * grub-core/fs/udf.c (GRUB_UDF_LOG2_BLKSIZE): Removed macro. (GRUB_UDF_BLKSZ): Removed macro. (struct grub_udf_data): New field "lbshift" to hold the logical block size of the file system in log2 format. (grub_udf_read_icb): Replace usage of macro GRUB_UDF_LOG2_BLKSZ with field lbshift from struct grub_udf_data. (grub_udf_read_file): Likewise. (grub_udf_read_block): Replace usage of macro GRUB_UDF_BLKSZ with field "lvd.bsize" from struct grub_udf_data. Replace division with right shift. (sblocklist): Change type to unsigned. (grub_udf_mount): Change type of "sblklist" to unsigned. New variable "vblock" to be used during VRS recognition. New variable "lbshift" to hold the detected logical block size. Move AVDP search before VRS recognition, because the latter requires knowledge of the logical block size, which is detected during the former. Detect and validate logical block size during AVDP search, adding support for block sizes 512, 1024 and 4096. Make VRS recognition independent of block size. Replace usages of macro GRUB_UDF_LOG2_BLKSZ with variable lbshift. >> 4/4) Support for allocation descriptor extensions >> [...] >> The patch checks, in grub_udf_read_block(), whether the "allocation >> descriptor type", previously ignored, is 3, and in this case, it loads >> the referenced block, checks that it's a valid allocation extension >> descriptor, and sets the "ad" pointer (and the "len" limit) to >> continue the iteration from the allocation descriptors contained in >> that block. >> >> This last one is the only patch which actually contains a proper new >> block of code, and it allocates a big structure on the stack (it's a >> sector, so it's up to 4K big): I don't know if this is OK, or if >> perhaps I should use grub_malloc() instead. Also, the patch depends on >> the previous "generic block size" patch. >> >> > + =C2=A0char buf[U32 (node->data->lvd.bsize)]; > Will segfault if bsize is too big. You need to allocate on heap Done. > - =C2=A0else > + =C2=A0else if (U16 (node->fe.tag.tag_ident =3D=3D GRUB_UDF_TAG_IDENT_EF= E)) > =C2=A0 =C2=A0 { > Parenthesis are wrong. While I was at it, I changed the 'if-else if' to a switch. > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 grub_disk_addr_t sec =3D grub= _udf_get_block(node->data, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 node->part_ref, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ad->position); > ad->position isn't byte-swapped. grub_udf_get_block() byte-swaps it itself, so I must not byte-swap it befor= e. > ChangeLog entry? Add support for allocation extent descriptors, needed on fragmented volumes. * grub-core/fs/udf.c (grub_udf_aed): New struct. (grub_udf_read_block): Change type of variable "len" to grub_ssize_t. Add sanity check for file entry type. Replace divisions with right shifts. Check the upper bits of the allocation descriptor's length and honour them by loading an allocation extent descriptor if they indicate so. Change all failure return paths to free the allocation extent descriptor if it was allocated. I'm attaching the full patch set (including the unchanged ones for convenience), and also the change log entries in attachment form in case gmail tampers with whitespace. Thank you, --=20 Giuseppe Caizzone --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="1-udf-large-files.patch" Content-Disposition: attachment; filename="1-udf-large-files.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddtkny1 ZGlmZiAtTmF1ciBncnViL2dydWItY29yZS9mcy91ZGYuYyBncnViLXRlc3QvZ3J1Yi1jb3JlL2Zz L3VkZi5jCi0tLSBncnViL2dydWItY29yZS9mcy91ZGYuYwkyMDEwLTA1LTA2IDE3OjMwOjM2LjAw MDAwMDAwMCArMDIwMAorKysgZ3J1Yi10ZXN0L2dydWItY29yZS9mcy91ZGYuYwkyMDEwLTEwLTI3 IDEwOjE4OjA4LjE2MDAwMDAzMyArMDIwMApAQCAtNDcxLDcgKzQ3MSw3IEBACiAJCSAgICB2b2lk IE5FU1RFRF9GVU5DX0FUVFIKIAkJICAgICgqcmVhZF9ob29rKSAoZ3J1Yl9kaXNrX2FkZHJfdCBz ZWN0b3IsCiAJCQkJICB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCksCi0JCSAgICBp bnQgcG9zLCBncnViX3NpemVfdCBsZW4sIGNoYXIgKmJ1ZikKKwkJICAgIGdydWJfb2ZmX3QgcG9z LCBncnViX3NpemVfdCBsZW4sIGNoYXIgKmJ1ZikKIHsKICAgc3dpdGNoIChVMTYgKG5vZGUtPmZl LmljYnRhZy5mbGFncykgJiBHUlVCX1VERl9JQ0JUQUdfRkxBR19BRF9NQVNLKQogICAgIHsKQEAg LTcwNCw3ICs3MDQsNyBAQAogewogICBncnViX2ZzaGVscF9ub2RlX3QgY2hpbGQ7CiAgIHN0cnVj dCBncnViX3VkZl9maWxlX2lkZW50IGRpcmVudDsKLSAgZ3J1Yl91aW50MzJfdCBvZmZzZXQgPSAw OworICBncnViX29mZl90IG9mZnNldCA9IDA7CiAKICAgY2hpbGQgPSBncnViX21hbGxvYyAoc2l6 ZW9mIChzdHJ1Y3QgZ3J1Yl9mc2hlbHBfbm9kZSkpOwogICBpZiAoIWNoaWxkKQo= --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="1-udf-large-files.changelog" Content-Disposition: attachment; filename="1-udf-large-files.changelog" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddu3cj2 CVN1cHBvcnQgcmVhZGluZyBmaWxlcyBsYXJnZXIgdGhhbiAyIEdpQi4KCgkqIGdydWItY29yZS9m cy91ZGYuYyAoZ3J1Yl91ZGZfaXRlcmF0ZV9kaXIpOiBjaGFuZ2UgdHlwZSBvZiB2YXJpYWJsZQoJ Im9mZnNldCIgZnJvbSBncnViX3VpbnQzMl90IHRvIGdydWJfb2ZmX3QuCgkoZ3J1Yl91ZGZfcmVh ZF9maWxlKTogY2hhbmdlIHR5cGUgb2YgcGFyYW1ldGVyICJwb3MiIGZyb20gaW50IHRvCglncnVi X29mZl90Lgo= --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="2-udf-deleted-files.patch" Content-Disposition: attachment; filename="2-udf-deleted-files.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddv1ah3 ZGlmZiAtTmF1ciBncnViL2dydWItY29yZS9mcy91ZGYuYyBncnViLXRlc3QvZ3J1Yi1jb3JlL2Zz L3VkZi5jCi0tLSBncnViL2dydWItY29yZS9mcy91ZGYuYwkyMDEwLTA1LTA2IDE3OjMwOjM2LjAw MDAwMDAwMCArMDIwMAorKysgZ3J1Yi10ZXN0L2dydWItY29yZS9mcy91ZGYuYwkyMDEwLTEwLTI3 IDEwOjE5OjI3LjcyODAwMDAxOCArMDIwMApAQCAtNzI5LDU3ICs3MjksNjAgQEAKIAkgIHJldHVy biAwOwogCX0KIAotICAgICAgY2hpbGQgPSBncnViX21hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZ3J1 Yl9mc2hlbHBfbm9kZSkpOwotICAgICAgaWYgKCFjaGlsZCkKLQlyZXR1cm4gMDsKLQotICAgICAg aWYgKGdydWJfdWRmX3JlYWRfaWNiIChkaXItPmRhdGEsICZkaXJlbnQuaWNiLCBjaGlsZCkpCi0J cmV0dXJuIDA7Ci0KICAgICAgIG9mZnNldCArPSBzaXplb2YgKGRpcmVudCkgKyBVMTYgKGRpcmVu dC5pbXBfdXNlX2xlbmd0aCk7Ci0gICAgICBpZiAoZGlyZW50LmNoYXJhY3RlcmlzdGljcyAmIEdS VUJfVURGX0ZJRF9DSEFSX1BBUkVOVCkKLQl7Ci0JICAvKiBUaGlzIGlzIHRoZSBwYXJlbnQgZGly ZWN0b3J5LiAgKi8KLQkgIGlmIChob29rICgiLi4iLCBHUlVCX0ZTSEVMUF9ESVIsIGNoaWxkKSkK LQkgICAgcmV0dXJuIDE7Ci0JfQotICAgICAgZWxzZQorICAgICAgaWYgKCEoZGlyZW50LmNoYXJh Y3RlcmlzdGljcyAmIEdSVUJfVURGX0ZJRF9DSEFSX0RFTEVURUQpKQogCXsKLQkgIGVudW0gZ3J1 Yl9mc2hlbHBfZmlsZXR5cGUgdHlwZTsKLQkgIGdydWJfdWludDhfdCByYXdbZGlyZW50LmZpbGVf aWRlbnRfbGVuZ3RoXTsKLQkgIGdydWJfdWludDE2X3QgdXRmMTZbZGlyZW50LmZpbGVfaWRlbnRf bGVuZ3RoIC0gMV07Ci0JICBncnViX3VpbnQ4X3QgZmlsZW5hbWVbZGlyZW50LmZpbGVfaWRlbnRf bGVuZ3RoICogMl07Ci0JICBncnViX3NpemVfdCB1dGYxNmxlbiA9IDA7Ci0KLQkgIHR5cGUgPSAo KGRpcmVudC5jaGFyYWN0ZXJpc3RpY3MgJiBHUlVCX1VERl9GSURfQ0hBUl9ESVJFQ1RPUlkpID8K LQkJICAoR1JVQl9GU0hFTFBfRElSKSA6IChHUlVCX0ZTSEVMUF9SRUcpKTsKLQotCSAgaWYgKChn cnViX3VkZl9yZWFkX2ZpbGUgKGRpciwgMCwgb2Zmc2V0LAotCQkJCSAgIGRpcmVudC5maWxlX2lk ZW50X2xlbmd0aCwKLQkJCQkgICAoY2hhciAqKSByYXcpKQotCSAgICAgICE9IGRpcmVudC5maWxl X2lkZW50X2xlbmd0aCkKKwkgIGNoaWxkID0gZ3J1Yl9tYWxsb2MgKHNpemVvZiAoc3RydWN0IGdy dWJfZnNoZWxwX25vZGUpKTsKKwkgIGlmICghY2hpbGQpCiAJICAgIHJldHVybiAwOwogCi0JICBp ZiAocmF3WzBdID09IDgpCi0JICAgIHsKLQkgICAgICB1bnNpZ25lZCBpOwotCSAgICAgIHV0ZjE2 bGVuID0gZGlyZW50LmZpbGVfaWRlbnRfbGVuZ3RoIC0gMTsKLQkgICAgICBmb3IgKGkgPSAwOyBp IDwgdXRmMTZsZW47IGkrKykKLQkJdXRmMTZbaV0gPSByYXdbaSArIDFdOwotCSAgICB9Ci0JICBp ZiAocmF3WzBdID09IDE2KQorICAgICAgICAgIGlmIChncnViX3VkZl9yZWFkX2ljYiAoZGlyLT5k YXRhLCAmZGlyZW50LmljYiwgY2hpbGQpKQorCSAgICByZXR1cm4gMDsKKworICAgICAgICAgIGlm IChkaXJlbnQuY2hhcmFjdGVyaXN0aWNzICYgR1JVQl9VREZfRklEX0NIQVJfUEFSRU5UKQogCSAg ICB7Ci0JICAgICAgdW5zaWduZWQgaTsKLQkgICAgICB1dGYxNmxlbiA9IChkaXJlbnQuZmlsZV9p ZGVudF9sZW5ndGggLSAxKSAvIDI7Ci0JICAgICAgZm9yIChpID0gMDsgaSA8IHV0ZjE2bGVuOyBp KyspCi0JCXV0ZjE2W2ldID0gKHJhd1syICogaSArIDFdIDw8IDgpIHwgcmF3WzIqaSArIDJdOwor CSAgICAgIC8qIFRoaXMgaXMgdGhlIHBhcmVudCBkaXJlY3RvcnkuICAqLworCSAgICAgIGlmICho b29rICgiLi4iLCBHUlVCX0ZTSEVMUF9ESVIsIGNoaWxkKSkKKwkgICAgICAgIHJldHVybiAxOwog CSAgICB9Ci0JICBpZiAocmF3WzBdID09IDggfHwgcmF3WzBdID09IDE2KQorICAgICAgICAgIGVs c2UKIAkgICAgewotCSAgICAgICpncnViX3V0ZjE2X3RvX3V0ZjggKGZpbGVuYW1lLCB1dGYxNiwg dXRmMTZsZW4pID0gJ1wwJzsKLQkgIAotCSAgICAgIGlmIChob29rICgoY2hhciAqKSBmaWxlbmFt ZSwgdHlwZSwgY2hpbGQpKQotCQlyZXR1cm4gMTsKKwkgICAgICBlbnVtIGdydWJfZnNoZWxwX2Zp bGV0eXBlIHR5cGU7CisJICAgICAgZ3J1Yl91aW50OF90IHJhd1tkaXJlbnQuZmlsZV9pZGVudF9s ZW5ndGhdOworCSAgICAgIGdydWJfdWludDE2X3QgdXRmMTZbZGlyZW50LmZpbGVfaWRlbnRfbGVu Z3RoIC0gMV07CisJICAgICAgZ3J1Yl91aW50OF90IGZpbGVuYW1lW2RpcmVudC5maWxlX2lkZW50 X2xlbmd0aCAqIDJdOworCSAgICAgIGdydWJfc2l6ZV90IHV0ZjE2bGVuID0gMDsKKworCSAgICAg IHR5cGUgPSAoKGRpcmVudC5jaGFyYWN0ZXJpc3RpY3MgJiBHUlVCX1VERl9GSURfQ0hBUl9ESVJF Q1RPUlkpID8KKwkJICAgICAgKEdSVUJfRlNIRUxQX0RJUikgOiAoR1JVQl9GU0hFTFBfUkVHKSk7 CisKKwkgICAgICBpZiAoKGdydWJfdWRmX3JlYWRfZmlsZSAoZGlyLCAwLCBvZmZzZXQsCisJCQkJ ICAgICAgIGRpcmVudC5maWxlX2lkZW50X2xlbmd0aCwKKwkJCQkgICAgICAgKGNoYXIgKikgcmF3 KSkKKwkJICAhPSBkaXJlbnQuZmlsZV9pZGVudF9sZW5ndGgpCisJCXJldHVybiAwOworCisJICAg ICAgaWYgKHJhd1swXSA9PSA4KQorCQl7CisJCSAgdW5zaWduZWQgaTsKKwkJICB1dGYxNmxlbiA9 IGRpcmVudC5maWxlX2lkZW50X2xlbmd0aCAtIDE7CisJCSAgZm9yIChpID0gMDsgaSA8IHV0ZjE2 bGVuOyBpKyspCisJCSAgICB1dGYxNltpXSA9IHJhd1tpICsgMV07CisJCX0KKwkgICAgICBpZiAo cmF3WzBdID09IDE2KQorCQl7CisJCSAgdW5zaWduZWQgaTsKKwkJICB1dGYxNmxlbiA9IChkaXJl bnQuZmlsZV9pZGVudF9sZW5ndGggLSAxKSAvIDI7CisJCSAgZm9yIChpID0gMDsgaSA8IHV0ZjE2 bGVuOyBpKyspCisJCSAgICB1dGYxNltpXSA9IChyYXdbMiAqIGkgKyAxXSA8PCA4KSB8IHJhd1sy KmkgKyAyXTsKKwkJfQorCSAgICAgIGlmIChyYXdbMF0gPT0gOCB8fCByYXdbMF0gPT0gMTYpCisJ CXsKKwkJICAqZ3J1Yl91dGYxNl90b191dGY4IChmaWxlbmFtZSwgdXRmMTYsIHV0ZjE2bGVuKSA9 ICdcMCc7CisKKwkJICBpZiAoaG9vayAoKGNoYXIgKikgZmlsZW5hbWUsIHR5cGUsIGNoaWxkKSkK KwkJICAgIHJldHVybiAxOworCQl9CiAJICAgIH0KIAl9CiAK --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="2-udf-deleted-files.changelog" Content-Disposition: attachment; filename="2-udf-deleted-files.changelog" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddv8l94 CVByb3Blcmx5IGhhbmRsZSBkZWxldGVkIGZpbGVzLgoKCSogZ3J1Yi1jb3JlL2ZzL3VkZi5jIChn cnViX3VkZl9pdGVyYXRlX2Rpcik6IFNraXAgZGlyZWN0b3J5IGVudHJpZXMKCXdob3NlICJjaGFy YWN0ZXJpc3RpY3MiIGZpZWxkIGhhcyB0aGUgYml0IEdSVUJfVURGX0ZJRF9DSEFSX0RFTEVURUQK CXNldC4K --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="3-udf-generic-block-size-v2.patch" Content-Disposition: attachment; filename="3-udf-generic-block-size-v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddveht5 LS0tIGdydWItb2xkL2dydWItY29yZS9mcy91ZGYuYwkyMDEwLTExLTA3IDA5OjE5OjA5LjczMjcy ODAwMCArMDEwMAorKysgZ3J1Yi1uZXcvZ3J1Yi1jb3JlL2ZzL3VkZi5jCTIwMTAtMTEtMDggMTQ6 MzA6MDEuNTg4MzQ3NjIxICswMTAwCkBAIC0zNCw5ICszNCw2IEBACiAjZGVmaW5lIFUzMgkJCQln cnViX2xlX3RvX2NwdTMyCiAjZGVmaW5lIFU2NAkJCQlncnViX2xlX3RvX2NwdTY0CiAKLSNkZWZp bmUgR1JVQl9VREZfTE9HMl9CTEtTWgkJMgotI2RlZmluZSBHUlVCX1VERl9CTEtTWgkJCTIwNDgK LQogI2RlZmluZSBHUlVCX1VERl9UQUdfSURFTlRfUFZECQkweDAwMDEKICNkZWZpbmUgR1JVQl9V REZfVEFHX0lERU5UX0FWRFAJCTB4MDAwMgogI2RlZmluZSBHUlVCX1VERl9UQUdfSURFTlRfVkRQ CQkweDAwMDMKQEAgLTM0Myw3ICszNDAsNyBAQAogICBzdHJ1Y3QgZ3J1Yl91ZGZfcGQgcGRzW0dS VUJfVURGX01BWF9QRFNdOwogICBzdHJ1Y3QgZ3J1Yl91ZGZfcGFydG1hcCAqcG1zW0dSVUJfVURG X01BWF9QTVNdOwogICBzdHJ1Y3QgZ3J1Yl91ZGZfbG9uZ19hZCByb290X2ljYjsKLSAgaW50IG5w ZCwgbnBtOworICBpbnQgbnBkLCBucG0sIGxic2hpZnQ7CiB9OwogCiBzdHJ1Y3QgZ3J1Yl9mc2hl bHBfbm9kZQpAQCAtMzg5LDcgKzM4Niw3IEBACiAgIGlmIChncnViX2Vycm5vKQogICAgIHJldHVy biBncnViX2Vycm5vOwogCi0gIGlmIChncnViX2Rpc2tfcmVhZCAoZGF0YS0+ZGlzaywgYmxvY2sg PDwgR1JVQl9VREZfTE9HMl9CTEtTWiwgMCwKKyAgaWYgKGdydWJfZGlza19yZWFkIChkYXRhLT5k aXNrLCBibG9jayA8PCBkYXRhLT5sYnNoaWZ0LCAwLAogCQkgICAgICBzaXplb2YgKHN0cnVjdCBn cnViX3VkZl9maWxlX2VudHJ5KSwKIAkJICAgICAgJm5vZGUtPmZlKSkKICAgICByZXR1cm4gZ3J1 Yl9lcnJubzsKQEAgLTQyNyw3ICs0MjQsNyBAQAogICAgICAgc3RydWN0IGdydWJfdWRmX3Nob3J0 X2FkICphZCA9IChzdHJ1Y3QgZ3J1Yl91ZGZfc2hvcnRfYWQgKikgcHRyOwogCiAgICAgICBsZW4g Lz0gc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl91ZGZfc2hvcnRfYWQpOwotICAgICAgZmlsZWJ5dGVzID0g ZmlsZWJsb2NrICogR1JVQl9VREZfQkxLU1o7CisgICAgICBmaWxlYnl0ZXMgPSBmaWxlYmxvY2sg KiBVMzIgKG5vZGUtPmRhdGEtPmx2ZC5ic2l6ZSk7CiAgICAgICB3aGlsZSAobGVuID4gMCkKIAl7 CiAJICBpZiAoZmlsZWJ5dGVzIDwgVTMyIChhZC0+bGVuZ3RoKSkKQEAgLTQzNSw3ICs0MzIsOCBA QAogICAgICAgICAgICAgICAgICAgICAoZ3J1Yl91ZGZfZ2V0X2Jsb2NrIChub2RlLT5kYXRhLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5wYXJ0X3JlZiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWQtPnBvc2l0aW9uKQot ICAgICAgICAgICAgICAgICAgICAgKyAoZmlsZWJ5dGVzIC8gR1JVQl9VREZfQkxLU1opKSk7Cisg ICAgICAgICAgICAgICAgICAgICArIChmaWxlYnl0ZXMgPj4gKEdSVUJfRElTS19TRUNUT1JfQklU UworCQkJCSAgICAgICsgbm9kZS0+ZGF0YS0+bGJzaGlmdCkpKSk7CiAKIAkgIGZpbGVieXRlcyAt PSBVMzIgKGFkLT5sZW5ndGgpOwogCSAgYWQrKzsKQEAgLTQ0Nyw3ICs0NDUsNyBAQAogICAgICAg c3RydWN0IGdydWJfdWRmX2xvbmdfYWQgKmFkID0gKHN0cnVjdCBncnViX3VkZl9sb25nX2FkICop IHB0cjsKIAogICAgICAgbGVuIC89IHNpemVvZiAoc3RydWN0IGdydWJfdWRmX2xvbmdfYWQpOwot ICAgICAgZmlsZWJ5dGVzID0gZmlsZWJsb2NrICogR1JVQl9VREZfQkxLU1o7CisgICAgICBmaWxl Ynl0ZXMgPSBmaWxlYmxvY2sgKiBVMzIgKG5vZGUtPmRhdGEtPmx2ZC5ic2l6ZSk7CiAgICAgICB3 aGlsZSAobGVuID4gMCkKIAl7CiAJICBpZiAoZmlsZWJ5dGVzIDwgVTMyIChhZC0+bGVuZ3RoKSkK QEAgLTQ1NSw3ICs0NTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAoZ3J1Yl91ZGZfZ2V0X2Js b2NrIChub2RlLT5kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhZC0+YmxvY2sucGFydF9yZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFkLT5ibG9jay5ibG9ja19udW0pCi0JCSAgICAgKyAoZmlsZWJ5dGVzIC8gR1JVQl9V REZfQkxLU1opKSk7CisJCSAgICAgKyAoZmlsZWJ5dGVzID4+IChHUlVCX0RJU0tfU0VDVE9SX0JJ VFMKKwkJCQkgICAgICArIG5vZGUtPmRhdGEtPmxic2hpZnQpKSkpOwogCiAJICBmaWxlYnl0ZXMg LT0gVTMyIChhZC0+bGVuZ3RoKTsKIAkgIGFkKys7CkBAIC00OTYsMjEgKzQ5NSwyMSBAQAogICAg IH0KIAogICByZXR1cm4gIGdydWJfZnNoZWxwX3JlYWRfZmlsZSAobm9kZS0+ZGF0YS0+ZGlzaywg bm9kZSwgcmVhZF9ob29rLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLCBs ZW4sIGJ1ZiwgZ3J1Yl91ZGZfcmVhZF9ibG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFU2NCAobm9kZS0+ZmUuZmlsZV9zaXplKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdSVUJfVURGX0xPRzJfQkxLU1opOworCQkJCSBwb3MsIGxlbiwgYnVmLCBncnVi X3VkZl9yZWFkX2Jsb2NrLAorCQkJCSBVNjQgKG5vZGUtPmZlLmZpbGVfc2l6ZSksCisJCQkJIG5v ZGUtPmRhdGEtPmxic2hpZnQpOwogfQogCi1zdGF0aWMgaW50IHNibG9ja2xpc3RbXSA9IHsgMjU2 LCA1MTIsIDAgfTsKK3N0YXRpYyB1bnNpZ25lZCBzYmxvY2tsaXN0W10gPSB7IDI1NiwgNTEyLCAw IH07CiAKIHN0YXRpYyBzdHJ1Y3QgZ3J1Yl91ZGZfZGF0YSAqCiBncnViX3VkZl9tb3VudCAoZ3J1 Yl9kaXNrX3QgZGlzaykKIHsKICAgc3RydWN0IGdydWJfdWRmX2RhdGEgKmRhdGEgPSAwOwogICBz dHJ1Y3QgZ3J1Yl91ZGZfZmlsZXNldCByb290X2ZzOwotICBpbnQgKnNibGtsaXN0ID0gc2Jsb2Nr bGlzdDsKLSAgZ3J1Yl91aW50MzJfdCBibG9jazsKLSAgaW50IGk7CisgIHVuc2lnbmVkICpzYmxr bGlzdDsKKyAgZ3J1Yl91aW50MzJfdCBibG9jaywgdmJsb2NrOworICBpbnQgaSwgbGJzaGlmdDsK IAogICBkYXRhID0gZ3J1Yl9tYWxsb2MgKHNpemVvZiAoc3RydWN0IGdydWJfdWRmX2RhdGEpKTsK ICAgaWYgKCFkYXRhKQpAQCAtNTE4LDEyICs1MTcsNDggQEAKIAogICBkYXRhLT5kaXNrID0gZGlz azsKIAorICAvKiBTZWFyY2ggZm9yIEFuY2hvciBWb2x1bWUgRGVzY3JpcHRvciBQb2ludGVyIChB VkRQKQorICAgKiBhbmQgZGV0ZXJtaW5lIGxvZ2ljYWwgYmxvY2sgc2l6ZS4gICovCisgIGJsb2Nr ID0gMDsKKyAgZm9yIChsYnNoaWZ0ID0gMDsgbGJzaGlmdCA8IDQ7IGxic2hpZnQrKykKKyAgICB7 CisgICAgICBmb3IgKHNibGtsaXN0ID0gc2Jsb2NrbGlzdDsgKnNibGtsaXN0OyBzYmxrbGlzdCsr KQorICAgICAgICB7CisJICBzdHJ1Y3QgZ3J1Yl91ZGZfYXZkcCBhdmRwOworCisJICBpZiAoZ3J1 Yl9kaXNrX3JlYWQgKGRpc2ssICpzYmxrbGlzdCA8PCBsYnNoaWZ0LCAwLAorCQkJICAgICAgc2l6 ZW9mIChzdHJ1Y3QgZ3J1Yl91ZGZfYXZkcCksICZhdmRwKSkKKwkgICAgeworCSAgICAgIGdydWJf ZXJyb3IgKEdSVUJfRVJSX0JBRF9GUywgIm5vdCBhbiBVREYgZmlsZXN5c3RlbSIpOworCSAgICAg IGdvdG8gZmFpbDsKKwkgICAgfQorCisJICBpZiAoVTE2IChhdmRwLnRhZy50YWdfaWRlbnQpID09 IEdSVUJfVURGX1RBR19JREVOVF9BVkRQICYmCisJICAgICAgVTMyIChhdmRwLnRhZy50YWdfbG9j YXRpb24pID09ICpzYmxrbGlzdCkKKwkgICAgeworCSAgICAgIGJsb2NrID0gVTMyIChhdmRwLnZk cy5zdGFydCk7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwl9CisKKyAgICAgIGlmIChibG9jaykK KwlicmVhazsKKyAgICB9CisKKyAgaWYgKCFibG9jaykKKyAgICB7CisgICAgICBncnViX2Vycm9y IChHUlVCX0VSUl9CQURfRlMsICJub3QgYW4gVURGIGZpbGVzeXN0ZW0iKTsKKyAgICAgIGdvdG8g ZmFpbDsKKyAgICB9CisgIGRhdGEtPmxic2hpZnQgPSBsYnNoaWZ0OworCiAgIC8qIFNlYXJjaCBm b3IgVm9sdW1lIFJlY29nbml0aW9uIFNlcXVlbmNlIChWUlMpLiAgKi8KLSAgZm9yIChibG9jayA9 IDE2OzsgYmxvY2srKykKKyAgZm9yICh2YmxvY2sgPSAoMzI3NjcgPj4gKGxic2hpZnQgKyBHUlVC X0RJU0tfU0VDVE9SX0JJVFMpKSArIDE7OworICAgICAgIHZibG9jayArPSAoMjA0NyA+PiAobGJz aGlmdCArIEdSVUJfRElTS19TRUNUT1JfQklUUykpICsgMSkKICAgICB7CiAgICAgICBzdHJ1Y3Qg Z3J1Yl91ZGZfdnJzIHZyczsKIAotICAgICAgaWYgKGdydWJfZGlza19yZWFkIChkaXNrLCBibG9j ayA8PCBHUlVCX1VERl9MT0cyX0JMS1NaLCAwLAorICAgICAgaWYgKGdydWJfZGlza19yZWFkIChk aXNrLCB2YmxvY2sgPDwgbGJzaGlmdCwgMCwKIAkJCSAgc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl91ZGZf dnJzKSwgJnZycykpCiAJewogCSAgZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZTLCAibm90IGFu IFVERiBmaWxlc3lzdGVtIik7CkBAIC01NDUsMzkgKzU4MCwxMyBAQAogCX0KICAgICB9CiAKLSAg LyogU2VhcmNoIGZvciBBbmNob3IgVm9sdW1lIERlc2NyaXB0b3IgUG9pbnRlciAoQVZEUCkuICAq LwotICB3aGlsZSAoMSkKLSAgICB7Ci0gICAgICBzdHJ1Y3QgZ3J1Yl91ZGZfYXZkcCBhdmRwOwot Ci0gICAgICBpZiAoZ3J1Yl9kaXNrX3JlYWQgKGRpc2ssICpzYmxrbGlzdCA8PCBHUlVCX1VERl9M T0cyX0JMS1NaLCAwLAotCQkJICBzaXplb2YgKHN0cnVjdCBncnViX3VkZl9hdmRwKSwgJmF2ZHAp KQotCXsKLQkgIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GUywgIm5vdCBhbiBVREYgZmlsZXN5 c3RlbSIpOwotCSAgZ290byBmYWlsOwotCX0KLQotICAgICAgaWYgKFUxNiAoYXZkcC50YWcudGFn X2lkZW50KSA9PSBHUlVCX1VERl9UQUdfSURFTlRfQVZEUCkKLQl7Ci0JICBibG9jayA9IFUzMiAo YXZkcC52ZHMuc3RhcnQpOwotCSAgYnJlYWs7Ci0JfQotCi0gICAgICBzYmxrbGlzdCsrOwotICAg ICAgaWYgKCpzYmxrbGlzdCA9PSAwKQotCXsKLQkgIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9G UywgIm5vdCBhbiBVREYgZmlsZXN5c3RlbSIpOwotCSAgZ290byBmYWlsOwotCX0KLSAgICB9Ci0K ICAgZGF0YS0+bnBkID0gZGF0YS0+bnBtID0gMDsKICAgLyogTG9jYXRlIFBhcnRpdGlvbiBEZXNj cmlwdG9yIChQRCkgYW5kIExvZ2ljYWwgVm9sdW1lIERlc2NyaXB0b3IgKExWRCkuICAqLwogICB3 aGlsZSAoMSkKICAgICB7CiAgICAgICBzdHJ1Y3QgZ3J1Yl91ZGZfdGFnIHRhZzsKIAotICAgICAg aWYgKGdydWJfZGlza19yZWFkIChkaXNrLCBibG9jayA8PCBHUlVCX1VERl9MT0cyX0JMS1NaLCAw LAorICAgICAgaWYgKGdydWJfZGlza19yZWFkIChkaXNrLCBibG9jayA8PCBsYnNoaWZ0LCAwLAog CQkJICBzaXplb2YgKHN0cnVjdCBncnViX3VkZl90YWcpLCAmdGFnKSkKIAl7CiAJICBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfRlMsICJub3QgYW4gVURGIGZpbGVzeXN0ZW0iKTsKQEAgLTU5Myw3 ICs2MDIsNyBAQAogCSAgICAgIGdvdG8gZmFpbDsKIAkgICAgfQogCi0JICBpZiAoZ3J1Yl9kaXNr X3JlYWQgKGRpc2ssIGJsb2NrIDw8IEdSVUJfVURGX0xPRzJfQkxLU1osIDAsCisJICBpZiAoZ3J1 Yl9kaXNrX3JlYWQgKGRpc2ssIGJsb2NrIDw8IGxic2hpZnQsIDAsCiAJCQkgICAgICBzaXplb2Yg KHN0cnVjdCBncnViX3VkZl9wZCksCiAJCQkgICAgICAmZGF0YS0+cGRzW2RhdGEtPm5wZF0pKQog CSAgICB7CkBAIC02MDksNyArNjE4LDcgQEAKIAogCSAgc3RydWN0IGdydWJfdWRmX3BhcnRtYXAg KnBwbTsKIAotCSAgaWYgKGdydWJfZGlza19yZWFkIChkaXNrLCBibG9jayA8PCBHUlVCX1VERl9M T0cyX0JMS1NaLCAwLAorCSAgaWYgKGdydWJfZGlza19yZWFkIChkaXNrLCBibG9jayA8PCBsYnNo aWZ0LCAwLAogCQkJICAgICAgc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl91ZGZfbHZkKSwKIAkJCSAgICAg ICZkYXRhLT5sdmQpKQogCSAgICB7CkBAIC02NzMsNyArNjgyLDcgQEAKICAgaWYgKGdydWJfZXJy bm8pCiAgICAgZ290byBmYWlsOwogCi0gIGlmIChncnViX2Rpc2tfcmVhZCAoZGlzaywgYmxvY2sg PDwgR1JVQl9VREZfTE9HMl9CTEtTWiwgMCwKKyAgaWYgKGdydWJfZGlza19yZWFkIChkaXNrLCBi bG9jayA8PCBsYnNoaWZ0LCAwLAogCQkgICAgICBzaXplb2YgKHN0cnVjdCBncnViX3VkZl9maWxl c2V0KSwgJnJvb3RfZnMpKQogICAgIHsKICAgICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9G UywgIm5vdCBhbiBVREYgZmlsZXN5c3RlbSIpOwo= --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="3-udf-generic-block-size-v2.changelog" Content-Disposition: attachment; filename="3-udf-generic-block-size-v2.changelog" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddvlwm6 CUFkZCBnZW5lcmljIGxvZ2ljYWwgYmxvY2sgc2l6ZSBzdXBwb3J0LgoKCSogZ3J1Yi1jb3JlL2Zz L3VkZi5jIChHUlVCX1VERl9MT0cyX0JMS1NJWkUpOiBSZW1vdmVkIG1hY3JvLgoJKEdSVUJfVURG X0JMS1NaKTogUmVtb3ZlZCBtYWNyby4KCShzdHJ1Y3QgZ3J1Yl91ZGZfZGF0YSk6IE5ldyBmaWVs ZCAibGJzaGlmdCIgdG8gaG9sZCB0aGUgbG9naWNhbAlibG9jawoJc2l6ZSBvZiB0aGUgZmlsZSBz eXN0ZW0gaW4gbG9nMiBmb3JtYXQuCgkoZ3J1Yl91ZGZfcmVhZF9pY2IpOiBSZXBsYWNlIHVzYWdl IG9mIG1hY3JvIEdSVUJfVURGX0xPRzJfQkxLU1ogd2l0aAoJZmllbGQgbGJzaGlmdCBmcm9tIHN0 cnVjdCBncnViX3VkZl9kYXRhLgoJKGdydWJfdWRmX3JlYWRfZmlsZSk6IExpa2V3aXNlLgoJKGdy dWJfdWRmX3JlYWRfYmxvY2spOiBSZXBsYWNlIHVzYWdlIG9mIG1hY3JvIEdSVUJfVURGX0JMS1Na IHdpdGgKCWZpZWxkICJsdmQuYnNpemUiIGZyb20gc3RydWN0IGdydWJfdWRmX2RhdGEuCglSZXBs YWNlIGRpdmlzaW9uIHdpdGggcmlnaHQgc2hpZnQuCgkoc2Jsb2NrbGlzdCk6IENoYW5nZSB0eXBl IHRvIHVuc2lnbmVkLgoJKGdydWJfdWRmX21vdW50KTogQ2hhbmdlIHR5cGUgb2YgInNibGtsaXN0 IiB0byB1bnNpZ25lZC4KCU5ldyB2YXJpYWJsZSAidmJsb2NrIiB0byBiZSB1c2VkIGR1cmluZyBW UlMgcmVjb2duaXRpb24uCglOZXcgdmFyaWFibGUgImxic2hpZnQiIHRvIGhvbGQgdGhlIGRldGVj dGVkIGxvZ2ljYWwgYmxvY2sgc2l6ZS4KCU1vdmUgQVZEUCBzZWFyY2ggYmVmb3JlIFZSUyByZWNv Z25pdGlvbiwgYmVjYXVzZSB0aGUgbGF0dGVyIHJlcXVpcmVzCglrbm93bGVkZ2Ugb2YgdGhlIGxv Z2ljYWwgYmxvY2sgc2l6ZSwgd2hpY2ggaXMgZGV0ZWN0ZWQgZHVyaW5nIHRoZQoJZm9ybWVyLgoJ RGV0ZWN0IGFuZCB2YWxpZGF0ZSBsb2dpY2FsIGJsb2NrIHNpemUgZHVyaW5nIEFWRFAgc2VhcmNo LCBhZGRpbmcKCXN1cHBvcnQgZm9yIGJsb2NrIHNpemVzIDUxMiwgMTAyNCBhbmQgNDA5Ni4KCU1h a2UgVlJTIHJlY29nbml0aW9uIGluZGVwZW5kZW50IG9mIGJsb2NrIHNpemUuCglSZXBsYWNlIHVz YWdlcyBvZiBtYWNybyBHUlVCX1VERl9MT0cyX0JMS1NaIHdpdGggdmFyaWFibGUgbGJzaGlmdC4K --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="4-udf-ad-extents-v2.patch" Content-Disposition: attachment; filename="4-udf-ad-extents-v2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddvrdu7 ZGlmZiAtTmF1ciBncnViLW9sZC9ncnViLWNvcmUvZnMvdWRmLmMgZ3J1Yi1uZXcvZ3J1Yi1jb3Jl L2ZzL3VkZi5jCi0tLSBncnViLW9sZC9ncnViLWNvcmUvZnMvdWRmLmMJMjAxMC0xMS0wOSAwOToy Mzo1My43MTMxMDY1MDIgKzAxMDAKKysrIGdydWItbmV3L2dydWItY29yZS9mcy91ZGYuYwkyMDEw LTExLTA5IDA5OjIxOjA4LjM1MTA1NjQ2OCArMDEwMApAQCAtMzMzLDYgKzMzMywxMyBAQAogICBn cnViX3VpbnQ4X3QgcGFydF9tYXBzWzE2MDhdOwogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7 CiAKK3N0cnVjdCBncnViX3VkZl9hZWQKK3sKKyAgc3RydWN0IGdydWJfdWRmX3RhZyB0YWc7Cisg IGdydWJfdWludDMyX3QgcHJldl9hZTsKKyAgZ3J1Yl91aW50MzJfdCBhZV9sZW47Cit9IF9fYXR0 cmlidXRlX18gKChwYWNrZWQpKTsKKwogc3RydWN0IGdydWJfdWRmX2RhdGEKIHsKICAgZ3J1Yl9k aXNrX3QgZGlzazsKQEAgLTQwMywxOSArNDEwLDI2IEBACiBzdGF0aWMgZ3J1Yl9kaXNrX2FkZHJf dAogZ3J1Yl91ZGZfcmVhZF9ibG9jayAoZ3J1Yl9mc2hlbHBfbm9kZV90IG5vZGUsIGdydWJfZGlz a19hZGRyX3QgZmlsZWJsb2NrKQogeworICBjaGFyICpidWYgPSBOVUxMOwogICBjaGFyICpwdHI7 Ci0gIGludCBsZW47CisgIGdydWJfc3NpemVfdCBsZW47CiAgIGdydWJfZGlza19hZGRyX3QgZmls ZWJ5dGVzOwogCi0gIGlmIChVMTYgKG5vZGUtPmZlLnRhZy50YWdfaWRlbnQpID09IEdSVUJfVURG X1RBR19JREVOVF9GRSkKKyAgc3dpdGNoIChVMTYgKG5vZGUtPmZlLnRhZy50YWdfaWRlbnQpKQog ICAgIHsKKyAgICBjYXNlIEdSVUJfVURGX1RBR19JREVOVF9GRToKICAgICAgIHB0ciA9IChjaGFy ICopICZub2RlLT5mZS5leHRfYXR0clswXSArIFUzMiAobm9kZS0+ZmUuZXh0X2F0dHJfbGVuZ3Ro KTsKICAgICAgIGxlbiA9IFUzMiAobm9kZS0+ZmUuYWxsb2NfZGVzY3NfbGVuZ3RoKTsKLSAgICB9 Ci0gIGVsc2UKLSAgICB7CisgICAgICBicmVhazsKKworICAgIGNhc2UgR1JVQl9VREZfVEFHX0lE RU5UX0VGRToKICAgICAgIHB0ciA9IChjaGFyICopICZub2RlLT5lZmUuZXh0X2F0dHJbMF0gKyBV MzIgKG5vZGUtPmVmZS5leHRfYXR0cl9sZW5ndGgpOwogICAgICAgbGVuID0gVTMyIChub2RlLT5l ZmUuYWxsb2NfZGVzY3NfbGVuZ3RoKTsKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAg ICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GUywgImludmFsaWQgZmlsZSBlbnRyeSIpOwor ICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgIGlmICgoVTE2IChub2RlLT5mZS5pY2J0YWcuZmxh Z3MpICYgR1JVQl9VREZfSUNCVEFHX0ZMQUdfQURfTUFTSykKQEAgLTQyMyw0NSArNDM3LDExNSBA QAogICAgIHsKICAgICAgIHN0cnVjdCBncnViX3VkZl9zaG9ydF9hZCAqYWQgPSAoc3RydWN0IGdy dWJfdWRmX3Nob3J0X2FkICopIHB0cjsKIAotICAgICAgbGVuIC89IHNpemVvZiAoc3RydWN0IGdy dWJfdWRmX3Nob3J0X2FkKTsKICAgICAgIGZpbGVieXRlcyA9IGZpbGVibG9jayAqIFUzMiAobm9k ZS0+ZGF0YS0+bHZkLmJzaXplKTsKLSAgICAgIHdoaWxlIChsZW4gPiAwKQorICAgICAgd2hpbGUg KGxlbiA+PSAoZ3J1Yl9zc2l6ZV90KSBzaXplb2YgKHN0cnVjdCBncnViX3VkZl9zaG9ydF9hZCkp CiAJewotCSAgaWYgKGZpbGVieXRlcyA8IFUzMiAoYWQtPmxlbmd0aCkpCi0JICAgIHJldHVybiAo KFUzMiAoYWQtPnBvc2l0aW9uKSAmIEdSVUJfVURGX0VYVF9NQVNLKSA/IDAgOgotICAgICAgICAg ICAgICAgICAgICAoZ3J1Yl91ZGZfZ2V0X2Jsb2NrIChub2RlLT5kYXRhLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5wYXJ0X3JlZiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWQtPnBvc2l0aW9uKQotICAgICAgICAgICAg ICAgICAgICAgKyAoZmlsZWJ5dGVzID4+IChHUlVCX0RJU0tfU0VDVE9SX0JJVFMKLQkJCQkgICAg ICArIG5vZGUtPmRhdGEtPmxic2hpZnQpKSkpOworCSAgZ3J1Yl91aW50MzJfdCBhZGxlbiA9IFUz MiAoYWQtPmxlbmd0aCkgJiAweDNmZmZmZmZmOworCSAgZ3J1Yl91aW50MzJfdCBhZHR5cGUgPSBV MzIgKGFkLT5sZW5ndGgpID4+IDMwOworCSAgaWYgKGFkdHlwZSA9PSAzKQorCSAgICB7CisJICAg ICAgc3RydWN0IGdydWJfdWRmX2FlZCAqZXh0ZW5zaW9uOworCSAgICAgIGdydWJfZGlza19hZGRy X3Qgc2VjID0gZ3J1Yl91ZGZfZ2V0X2Jsb2NrKG5vZGUtPmRhdGEsCisJCQkJCQkJbm9kZS0+cGFy dF9yZWYsCisJCQkJCQkJYWQtPnBvc2l0aW9uKTsKKwkgICAgICBpZiAoIWJ1ZikKKwkJeworCQkg IGJ1ZiA9IGdydWJfbWFsbG9jIChVMzIgKG5vZGUtPmRhdGEtPmx2ZC5ic2l6ZSkpOworCQkgIGlm ICghYnVmKQorCQkgICAgcmV0dXJuIDA7CisJCX0KKwkgICAgICBpZiAoZ3J1Yl9kaXNrX3JlYWQg KG5vZGUtPmRhdGEtPmRpc2ssIHNlYyA8PCBub2RlLT5kYXRhLT5sYnNoaWZ0LAorCQkJCSAgMCwg YWRsZW4sIGJ1ZikpCisJCWdvdG8gZmFpbDsKKworCSAgICAgIGV4dGVuc2lvbiA9IChzdHJ1Y3Qg Z3J1Yl91ZGZfYWVkICopIGJ1ZjsKKwkgICAgICBpZiAoVTE2IChleHRlbnNpb24tPnRhZy50YWdf aWRlbnQpICE9IEdSVUJfVURGX1RBR19JREVOVF9BRUQpCisJCXsKKwkJICBncnViX2Vycm9yIChH UlVCX0VSUl9CQURfRlMsICJpbnZhbGlkIGFlZCB0YWciKTsKKwkJICBnb3RvIGZhaWw7CisJCX0K KworCSAgICAgIGxlbiA9IFUzMiAoZXh0ZW5zaW9uLT5hZV9sZW4pOworCSAgICAgIGFkID0gKHN0 cnVjdCBncnViX3VkZl9zaG9ydF9hZCAqKQorCQkgICAgKGJ1ZiArIHNpemVvZiAoc3RydWN0IGdy dWJfdWRmX2FlZCkpOworCSAgICAgIGNvbnRpbnVlOworCSAgICB9CisKKwkgIGlmIChmaWxlYnl0 ZXMgPCBhZGxlbikKKwkgICAgeworCSAgICAgIGdydWJfdWludDMyX3QgYWRfcG9zID0gYWQtPnBv c2l0aW9uOworCSAgICAgIGdydWJfZnJlZSAoYnVmKTsKKwkgICAgICByZXR1cm4gKChVMzIgKGFk X3BvcykgJiBHUlVCX1VERl9FWFRfTUFTSykgPyAwIDoKKwkJICAgICAgKGdydWJfdWRmX2dldF9i bG9jayAobm9kZS0+ZGF0YSwgbm9kZS0+cGFydF9yZWYsIGFkX3BvcykKKwkJICAgICAgICsgKGZp bGVieXRlcyA+PiAoR1JVQl9ESVNLX1NFQ1RPUl9CSVRTCisJCQkJCSsgbm9kZS0+ZGF0YS0+bGJz aGlmdCkpKSk7CisJICAgIH0KIAotCSAgZmlsZWJ5dGVzIC09IFUzMiAoYWQtPmxlbmd0aCk7CisJ ICBmaWxlYnl0ZXMgLT0gYWRsZW47CiAJICBhZCsrOwotCSAgbGVuLS07CisJICBsZW4gLT0gc2l6 ZW9mIChzdHJ1Y3QgZ3J1Yl91ZGZfc2hvcnRfYWQpOwogCX0KICAgICB9CiAgIGVsc2UKICAgICB7 CiAgICAgICBzdHJ1Y3QgZ3J1Yl91ZGZfbG9uZ19hZCAqYWQgPSAoc3RydWN0IGdydWJfdWRmX2xv bmdfYWQgKikgcHRyOwogCi0gICAgICBsZW4gLz0gc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl91ZGZfbG9u Z19hZCk7CiAgICAgICBmaWxlYnl0ZXMgPSBmaWxlYmxvY2sgKiBVMzIgKG5vZGUtPmRhdGEtPmx2 ZC5ic2l6ZSk7Ci0gICAgICB3aGlsZSAobGVuID4gMCkKKyAgICAgIHdoaWxlIChsZW4gPj0gKGdy dWJfc3NpemVfdCkgc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl91ZGZfbG9uZ19hZCkpCiAJewotCSAgaWYg KGZpbGVieXRlcyA8IFUzMiAoYWQtPmxlbmd0aCkpCi0JICAgIHJldHVybiAoKFUzMiAoYWQtPmJs b2NrLmJsb2NrX251bSkgJiBHUlVCX1VERl9FWFRfTUFTSykgPyAgMCA6Ci0gICAgICAgICAgICAg ICAgICAgIChncnViX3VkZl9nZXRfYmxvY2sgKG5vZGUtPmRhdGEsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFkLT5ibG9jay5wYXJ0X3JlZiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWQtPmJsb2NrLmJsb2NrX251bSkKLQkJICAg ICArIChmaWxlYnl0ZXMgPj4gKEdSVUJfRElTS19TRUNUT1JfQklUUwotCQkJCSAgICAgICsgbm9k ZS0+ZGF0YS0+bGJzaGlmdCkpKSk7CisJICBncnViX3VpbnQzMl90IGFkbGVuID0gVTMyIChhZC0+ bGVuZ3RoKSAmIDB4M2ZmZmZmZmY7CisJICBncnViX3VpbnQzMl90IGFkdHlwZSA9IFUzMiAoYWQt Pmxlbmd0aCkgPj4gMzA7CisJICBpZiAoYWR0eXBlID09IDMpCisJICAgIHsKKwkgICAgICBzdHJ1 Y3QgZ3J1Yl91ZGZfYWVkICpleHRlbnNpb247CisJICAgICAgZ3J1Yl9kaXNrX2FkZHJfdCBzZWMg PSBncnViX3VkZl9nZXRfYmxvY2sobm9kZS0+ZGF0YSwKKwkJCQkJCQlhZC0+YmxvY2sucGFydF9y ZWYsCisJCQkJCQkJYWQtPmJsb2NrLmJsb2NrX251bSk7CisJICAgICAgaWYgKCFidWYpCisJCXsK KwkJICBidWYgPSBncnViX21hbGxvYyAoVTMyIChub2RlLT5kYXRhLT5sdmQuYnNpemUpKTsKKwkJ ICBpZiAoIWJ1ZikKKwkJICAgIHJldHVybiAwOworCQl9CisJICAgICAgaWYgKGdydWJfZGlza19y ZWFkIChub2RlLT5kYXRhLT5kaXNrLCBzZWMgPDwgbm9kZS0+ZGF0YS0+bGJzaGlmdCwKKwkJCQkg IDAsIGFkbGVuLCBidWYpKQorCQlnb3RvIGZhaWw7CisKKwkgICAgICBleHRlbnNpb24gPSAoc3Ry dWN0IGdydWJfdWRmX2FlZCAqKSBidWY7CisJICAgICAgaWYgKFUxNiAoZXh0ZW5zaW9uLT50YWcu dGFnX2lkZW50KSAhPSBHUlVCX1VERl9UQUdfSURFTlRfQUVEKQorCQl7CisJCSAgZ3J1Yl9lcnJv ciAoR1JVQl9FUlJfQkFEX0ZTLCAiaW52YWxpZCBhZWQgdGFnIik7CisJCSAgZ290byBmYWlsOwor CQl9CisKKwkgICAgICBsZW4gPSBVMzIgKGV4dGVuc2lvbi0+YWVfbGVuKTsKKwkgICAgICBhZCA9 IChzdHJ1Y3QgZ3J1Yl91ZGZfbG9uZ19hZCAqKQorCQkgICAgKGJ1ZiArIHNpemVvZiAoc3RydWN0 IGdydWJfdWRmX2FlZCkpOworCSAgICAgIGNvbnRpbnVlOworCSAgICB9CisJICAgICAgCisJICBp ZiAoZmlsZWJ5dGVzIDwgYWRsZW4pCisJICAgIHsKKwkgICAgICBncnViX3VpbnQzMl90IGFkX2Js b2NrX251bSA9IGFkLT5ibG9jay5ibG9ja19udW07CisJICAgICAgZ3J1Yl91aW50MzJfdCBhZF9w YXJ0X3JlZiA9IGFkLT5ibG9jay5wYXJ0X3JlZjsKKwkgICAgICBncnViX2ZyZWUgKGJ1Zik7CisJ ICAgICAgcmV0dXJuICgoVTMyIChhZF9ibG9ja19udW0pICYgR1JVQl9VREZfRVhUX01BU0spID8g IDAgOgorCQkgICAgICAoZ3J1Yl91ZGZfZ2V0X2Jsb2NrIChub2RlLT5kYXRhLCBhZF9wYXJ0X3Jl ZiwKKwkJCQkJICAgYWRfYmxvY2tfbnVtKQorCQkgICAgICAgKyAoZmlsZWJ5dGVzID4+IChHUlVC X0RJU0tfU0VDVE9SX0JJVFMKKwkJCQkgICAgICAgICsgbm9kZS0+ZGF0YS0+bGJzaGlmdCkpKSk7 CisJICAgIH0KIAotCSAgZmlsZWJ5dGVzIC09IFUzMiAoYWQtPmxlbmd0aCk7CisJICBmaWxlYnl0 ZXMgLT0gYWRsZW47CiAJICBhZCsrOwotCSAgbGVuLS07CisJICBsZW4gLT0gc2l6ZW9mIChzdHJ1 Y3QgZ3J1Yl91ZGZfbG9uZ19hZCk7CiAJfQogICAgIH0KIAorZmFpbDoKKyAgaWYgKGJ1ZikKKyAg ICBncnViX2ZyZWUgKGJ1Zik7CisKICAgcmV0dXJuIDA7CiB9CiAK --20cf301d44145b5a730494c32663 Content-Type: application/octet-stream; name="4-udf-ad-extents-v2.changelog" Content-Disposition: attachment; filename="4-udf-ad-extents-v2.changelog" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ggddvybx8 CUFkZCBzdXBwb3J0IGZvciBhbGxvY2F0aW9uIGV4dGVudCBkZXNjcmlwdG9ycywgbmVlZGVkIG9u IGZyYWdtZW50ZWQKCXZvbHVtZXMuCgoJKiBncnViLWNvcmUvZnMvdWRmLmMgKGdydWJfdWRmX2Fl ZCk6IE5ldyBzdHJ1Y3QuCgkoZ3J1Yl91ZGZfcmVhZF9ibG9jayk6IENoYW5nZSB0eXBlIG9mIHZh cmlhYmxlICJsZW4iIHRvIGdydWJfc3NpemVfdC4KCUFkZCBzYW5pdHkgY2hlY2sgZm9yIGZpbGUg ZW50cnkgdHlwZS4KCVJlcGxhY2UgZGl2aXNpb25zIHdpdGggcmlnaHQgc2hpZnRzLgoJQ2hlY2sg dGhlIHVwcGVyIGJpdHMgb2YgdGhlIGFsbG9jYXRpb24gZGVzY3JpcHRvcidzIGxlbmd0aCBhbmQg aG9ub3VyCgl0aGVtIGJ5IGxvYWRpbmcgYW4gYWxsb2NhdGlvbiBleHRlbnQgZGVzY3JpcHRvciBp ZiB0aGV5IGluZGljYXRlIHNvLgoJQ2hhbmdlIGFsbCBmYWlsdXJlIHJldHVybiBwYXRocyB0byBm cmVlIHRoZSBhbGxvY2F0aW9uIGV4dGVudAoJZGVzY3JpcHRvciBpZiBpdCB3YXMgYWxsb2NhdGVk Lgo= --20cf301d44145b5a730494c32663--