Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1srHxo-000Npx-UE for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Sep 2024 14:16:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1srHxn-001qnW-0m for pgsql-hackers@arkaria.postgresql.org; Thu, 19 Sep 2024 14:16:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1srHxm-001qnN-F8 for pgsql-hackers@lists.postgresql.org; Thu, 19 Sep 2024 14:16:56 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1srHxj-0001DY-Or for pgsql-hackers@postgresql.org; Thu, 19 Sep 2024 14:16:54 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id A23BA60605; Thu, 19 Sep 2024 23:16:47 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_a291cc782b87a7548b4b68112e58ee97" Content-Transfer-Encoding: 8bit Date: Thu, 19 Sep 2024 23:16:47 +0900 From: torikoshia To: Fujii Masao Cc: Michael Paquier , sawada.mshk@gmail.com, Pgsql Hackers Subject: Re: Add on_error and log_verbosity options to file_fdw In-Reply-To: References: <841721f3ca9a69574a72eb141c83933c@oss.nttdata.com> <79a336ccebc70401625743686c41b81a@oss.nttdata.com> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <5739a8ee4320a31ca04752fe3972aa73@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_a291cc782b87a7548b4b68112e58ee97 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On 2024-09-11 23:50, Fujii Masao wrote: Thanks for your comments! > Here are the review comments for 0001 patch. > > + silent excludes verbose messages. > > This should clarify that in silent mode, not only verbose messages but > also > default ones are suppressed? Agreed. > + cstate->opts.log_verbosity != > COPY_LOG_VERBOSITY_SILENT) > > I think using "cstate->opts.log_verbosity >= > COPY_LOG_VERBOSITY_DEFAULT" instead > might improve readability. Agreed. I've also modified a similar code in fileEndForeignScan() in 0002 patch. > - COPY_LOG_VERBOSITY_DEFAULT = 0, /* logs no additional messages, > default */ > - COPY_LOG_VERBOSITY_VERBOSE, /* logs additional messages */ > + COPY_LOG_VERBOSITY_SILENT = -1, /* logs none */ > + COPY_LOG_VERBOSITY_DEFAULT = 0, /* logs no additional messages, > default */ > + COPY_LOG_VERBOSITY_VERBOSE, /* logs additional messages */ > > Why do we need to assign specific numbers like -1 or 0 in this enum > definition? CopyFormatOptions is initialized by palloc0() at the beginning of ProcessCopyOptions(). The reason to assign specific numbers here is to assign COPY_LOG_VERBOSITY_DEFAULT to 0 as default value and sort elements of enum according to the amount of logging. Should we assign 0 to COPY_LOG_VERBOSITY_SILENT and change opts_out->log_verbosity after the initialization? > Here are the review comments for 0002 patch. > > + > pgstat_progress_update_param(PROGRESS_COPY_TUPLES_SKIPPED, > + > ++skipped); > > The skipped tuple count isn't accurate because fileIterateForeignScan() > resets > "skipped" to 0. Ugh. Fixed to use cstate->num_errors. BTW CopyFrom() also uses local variable skipped. It isn't reset like file_fdw, but using local variable seems not necessary since we can use cstate->num_errors here as well. I'm going to discuss it in another thread. > + if (cstate->opts.on_error != COPY_ON_ERROR_STOP && > + cstate->escontext->error_occurred) > + { > + /* > + * Soft error occurred, skip this tuple and > deal with error > + * information according to ON_ERROR. > + */ > + if (cstate->opts.on_error == > COPY_ON_ERROR_IGNORE) > > If COPY_ON_ERROR_IGNORE indicates tuple skipping, shouldn’t we not only > reset > error_occurred but also call "pgstat_progress_update_param" and > continue within > this block? I may misunderstand your comment, but I thought it to behave as you expect in the below codes: ``` + /* Report that this tuple was skipped by the ON_ERROR clause */ + pgstat_progress_update_param(PROGRESS_COPY_TUPLES_SKIPPED, + ++skipped); + + /* Repeat NextCopyFrom() until no soft error occurs */ + continue; ``` > + for(;;) > + { > Using "goto" here might improve readability instead of using a "for" > loop. Hmm, AFAIU we need to return a slot here before the end of file is reached. ``` --src/backend/executor/execMain.c [ExecutePlan()] /* * if the tuple is null, then we assume there is nothing more to * process so we just end the loop... */ if (TupIsNull(slot)) break; ``` When ignoring errors, we have to keep calling NextCopyFrom() until we find a non error tuple or EOF and to do so calling NextCopyFrom() in for loop seems straight forward. Replacing the "for" loop using "goto" as follows is possible, but seems not so readable because of the upward "goto": ``` start_of_getting_tuple: if (!NextCopyFrom(cstate, econtext, slot->tts_values, slot->tts_isnull)) goto end_of_fileread; if (cstate->opts.on_error != COPY_ON_ERROR_STOP && cstate->escontext->error_occurred) { /* * Soft error occurred, skip this tuple and deal with error * information according to ON_ERROR. */ if (cstate->opts.on_error == COPY_ON_ERROR_IGNORE) /* * Just make ErrorSaveContext ready for the next NextCopyFrom. * Since we don't set details_wanted and error_data is not to * be filled, just resetting error_occurred is enough. */ cstate->escontext->error_occurred = false; /* Report that this tuple was skipped by the ON_ERROR clause */ pgstat_progress_update_param(PROGRESS_COPY_TUPLES_SKIPPED, cstate->num_errors); goto start_of_fileread; } ExecStoreVirtualTuple(slot); end_of_getting_tuple: ``` Attached v4 patches reflected these comments. -- Regards, -- Atsushi Torikoshi NTT DATA Group Corporation --=_a291cc782b87a7548b4b68112e58ee97 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0001-Add-log_verbosity-to-silent.patch Content-Disposition: attachment; filename=v4-0001-Add-log_verbosity-to-silent.patch; size=5768 RnJvbSA4NjQzZjhlOTczMDViZjJhOTc5ZmUwYjU0NjA5MTdjNDU0ZDYzOTExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgMTkgU2VwIDIwMjQgMDA6MTY6MzcgKzA5MDAKU3ViamVjdDog W1BBVENIIHY0IDEvMl0gQWRkIGxvZ192ZXJib3NpdHkgdG8gJ3NpbGVudCcKCldoZW4gb25fZXJy b3IgaXMgc2V0IHRvIGlnbm9yZSwgQ09QWSBjdXJyZW50bHkgbG9ncyBhIE5PVElDRSBtZXNzYWdl CmNvbnRhaW5pbmcgdGhlIGlnbm9yZWQgcm93IGNvdW50LgpXaGVuIHVzaW5nIG9uX2Vycm9yIG9w dGlvbiB0byBmaWxlX2ZkdywgaXQnZCBiZSBiZXR0ZXIgdG8gb21pdCB0aGlzCm1lc3NhZ2UgaW4g c29tZSBjYXNlcywgc3VjaCBhcyBmcmVxdWVudCBhY2Nlc3MgdG8gYSBtYWxmb3JtZWQgZmlsZQp2 aWEgdGhlIHNhbWUgZm9yZWlnbiB0YWJsZS4KQXMgYSBwcmVsaW1pbmFyeSBzdGVwIHRvIGFkZCBv bl9lcnJvciBvcHRpb24gdG8gZmlsZV9mZHcsIHRoaXMgcGF0Y2gKYWRkcyBuZXcgdmFsdWUgJ3Np bGVudCcgdG8gbG9nX3ZlcmJvc2l0eSBhbmQgZW5hYmxlcyB0byBzaWxlbmNlCnRoZSBtZXNzYWdl LgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvY29weS5zZ21sICAgICAgICAgIHwgMTAgKysrKysrKy0t LQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weS5jICAgICAgICAgfCAgNCArKystCiBzcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jICAgICB8ICAzICsrLQogc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oICAgICAgICAgfCAgNiArKysrLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv Y29weTIub3V0IHwgIDQgKysrLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsICAgICAg fCAgNCArKysrCiA2IGZpbGVzIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jb3B5LnNnbWwgYi9kb2Mvc3JjL3Nn bWwvcmVmL2NvcHkuc2dtbAppbmRleCAxNTE4YWY4YTA0Li5kODc2ODRhNWJlIDEwMDY0NAotLS0g YS9kb2Mvc3JjL3NnbWwvcmVmL2NvcHkuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NvcHku c2dtbApAQCAtNDA3LDYgKzQwNyw4IEBAIENPUFkgeyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKCA8cmVwbGFjZWFibGUKICAgICAgIDxs aXRlcmFsPnZlcmJvc2U8L2xpdGVyYWw+LCBhIDxsaXRlcmFsPk5PVElDRTwvbGl0ZXJhbD4gbWVz c2FnZQogICAgICAgY29udGFpbmluZyB0aGUgbGluZSBvZiB0aGUgaW5wdXQgZmlsZSBhbmQgdGhl IGNvbHVtbiBuYW1lIHdob3NlIGlucHV0CiAgICAgICBjb252ZXJzaW9uIGhhcyBmYWlsZWQgaXMg ZW1pdHRlZCBmb3IgZWFjaCBkaXNjYXJkZWQgcm93LgorICAgICAgV2hlbiBpdCBpcyBzZXQgdG8g PGxpdGVyYWw+c2lsZW50PC9saXRlcmFsPiwgbm8gbWVzc2FnZSBpcyBlbWl0dGVkCisgICAgICBy ZWdhcmRpbmcgaWdub3JlZCByb3dzLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAg IDwvdmFybGlzdGVudHJ5PgpAQCAtNDI4LDkgKzQzMCwxMSBAQCBDT1BZIHsgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICggPHJlcGxhY2Vh YmxlCiAgICAgPGxpc3RpdGVtPgogICAgICA8cGFyYT4KICAgICAgIFNwZWNpZnkgdGhlIGFtb3Vu dCBvZiBtZXNzYWdlcyBlbWl0dGVkIGJ5IGEgPGNvbW1hbmQ+Q09QWTwvY29tbWFuZD4KLSAgICAg IGNvbW1hbmQ6IDxsaXRlcmFsPmRlZmF1bHQ8L2xpdGVyYWw+IG9yIDxsaXRlcmFsPnZlcmJvc2U8 L2xpdGVyYWw+LiBJZgotICAgICAgPGxpdGVyYWw+dmVyYm9zZTwvbGl0ZXJhbD4gaXMgc3BlY2lm aWVkLCBhZGRpdGlvbmFsIG1lc3NhZ2VzIGFyZSBlbWl0dGVkCi0gICAgICBkdXJpbmcgcHJvY2Vz c2luZy4KKyAgICAgIGNvbW1hbmQ6IDxsaXRlcmFsPmRlZmF1bHQ8L2xpdGVyYWw+LCA8bGl0ZXJh bD52ZXJib3NlPC9saXRlcmFsPiwgb3IKKyAgICAgIDxsaXRlcmFsPnNpbGVudDwvbGl0ZXJhbD4u CisgICAgICBJZiA8bGl0ZXJhbD52ZXJib3NlPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsIGFkZGl0 aW9uYWwgbWVzc2FnZXMgYXJlCisgICAgICBlbWl0dGVkIGR1cmluZyBwcm9jZXNzaW5nLgorICAg ICAgPGxpdGVyYWw+c2lsZW50PC9saXRlcmFsPiBzdXBwcmVzc2VzIGJvdGggdmVyYm9zZSBhbmQg ZGVmYXVsdCBtZXNzYWdlcy4KICAgICAgPC9wYXJhPgogICAgICA8cGFyYT4KICAgICAgIFRoaXMg aXMgY3VycmVudGx5IHVzZWQgaW4gPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPiBjb21tYW5k IHdoZW4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHkuYwppbmRleCAzYmI1NzlhM2E0Li4wM2ViN2E0ZWJhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weS5jCkBAIC00MjcsOSArNDI3LDExIEBAIGRlZkdldENvcHlMb2dWZXJib3NpdHlDaG9p Y2UoRGVmRWxlbSAqZGVmLCBQYXJzZVN0YXRlICpwc3RhdGUpCiAJY2hhcgkgICAqc3ZhbDsKIAog CS8qCi0JICogQWxsb3cgImRlZmF1bHQiLCBvciAidmVyYm9zZSIgdmFsdWVzLgorCSAqIEFsbG93 ICJzaWxlbnQiLCAiZGVmYXVsdCIsIG9yICJ2ZXJib3NlIiB2YWx1ZXMuCiAJICovCiAJc3ZhbCA9 IGRlZkdldFN0cmluZyhkZWYpOworCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJzaWxlbnQiKSA9 PSAwKQorCQlyZXR1cm4gQ09QWV9MT0dfVkVSQk9TSVRZX1NJTEVOVDsKIAlpZiAocGdfc3RyY2Fz ZWNtcChzdmFsLCAiZGVmYXVsdCIpID09IDApCiAJCXJldHVybiBDT1BZX0xPR19WRVJCT1NJVFlf REVGQVVMVDsKIAlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAidmVyYm9zZSIpID09IDApCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weWZyb20uYwppbmRleCAyZDM0NjI5MTNlLi40Nzg3OTk5NGY3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL2NvcHlmcm9tLmMKQEAgLTEzMjAsNyArMTMyMCw4IEBAIENvcHlGcm9tKENvcHlGcm9tU3Rh dGUgY3N0YXRlKQogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsK IAogCWlmIChjc3RhdGUtPm9wdHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCi0J CWNzdGF0ZS0+bnVtX2Vycm9ycyA+IDApCisJCWNzdGF0ZS0+bnVtX2Vycm9ycyA+IDAgJiYKKwkJ Y3N0YXRlLT5vcHRzLmxvZ192ZXJib3NpdHkgPj0gQ09QWV9MT0dfVkVSQk9TSVRZX0RFRkFVTFQp CiAJCWVyZXBvcnQoTk9USUNFLAogCQkJCWVycm1zZ19wbHVyYWwoIiVsbHUgcm93IHdhcyBza2lw cGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKIAkJCQkJCQkgICIlbGx1IHJv d3Mgd2VyZSBza2lwcGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5IiwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2NvcHkuaAppbmRleCAxNDFmZDQ4ZGMxLi45ZmIxM2U5NTJkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29weS5oCkBA IC00NSw4ICs0NSwxMCBAQCB0eXBlZGVmIGVudW0gQ29weU9uRXJyb3JDaG9pY2UKICAqLwogdHlw ZWRlZiBlbnVtIENvcHlMb2dWZXJib3NpdHlDaG9pY2UKIHsKLQlDT1BZX0xPR19WRVJCT1NJVFlf REVGQVVMVCA9IDAsIC8qIGxvZ3Mgbm8gYWRkaXRpb25hbCBtZXNzYWdlcywgZGVmYXVsdCAqLwot CUNPUFlfTE9HX1ZFUkJPU0lUWV9WRVJCT1NFLCAvKiBsb2dzIGFkZGl0aW9uYWwgbWVzc2FnZXMg Ki8KKwlDT1BZX0xPR19WRVJCT1NJVFlfU0lMRU5UID0gLTEsCS8qIGxvZ3Mgbm9uZSAqLworCUNP UFlfTE9HX1ZFUkJPU0lUWV9ERUZBVUxUID0gMCwJLyogbG9ncyBubyBhZGRpdGlvbmFsIG1lc3Nh Z2VzLiBBcyB0aGlzIGlzCisJCQkJCQkJCQkgICB0aGUgZGVmYXVsdCwgYXNzaWduIDAgKi8KKwlD T1BZX0xPR19WRVJCT1NJVFlfVkVSQk9TRSwJLyogbG9ncyBhZGRpdGlvbmFsIG1lc3NhZ2VzICov CiB9IENvcHlMb2dWZXJib3NpdHlDaG9pY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL2NvcHkyLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvY29w eTIub3V0CmluZGV4IDYxYTE5Y2RjNGMuLjRlNzUyOTc3YjUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvY29weTIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvY29weTIub3V0CkBAIC03NjAsNiArNzYwLDcgQEAgQ09QWSBjaGVja19pZ25fZXJyMiBGUk9N IFNURElOIFdJVEggKG9uX2Vycm9yIGlnbm9yZSwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKIE5P VElDRTogIHNraXBwaW5nIHJvdyBkdWUgdG8gZGF0YSB0eXBlIGluY29tcGF0aWJpbGl0eSBhdCBs aW5lIDIgZm9yIGNvbHVtbiAibCI6IG51bGwgaW5wdXQKIENPTlRFWFQ6ICBDT1BZIGNoZWNrX2ln bl9lcnIyCiBOT1RJQ0U6ICAxIHJvdyB3YXMgc2tpcHBlZCBkdWUgdG8gZGF0YSB0eXBlIGluY29t cGF0aWJpbGl0eQorQ09QWSBjaGVja19pZ25fZXJyMiBGUk9NIFNURElOIFdJVEggKG9uX2Vycm9y IGlnbm9yZSwgbG9nX3ZlcmJvc2l0eSBzaWxlbnQpOwogLS0gcmVzZXQgY29udGV4dCBjaG9pY2UK IFxzZXQgU0hPV19DT05URVhUIGVycm9ycwogU0VMRUNUICogRlJPTSBjaGVja19pZ25fZXJyOwpA QCAtNzc0LDcgKzc3NSw4IEBAIFNFTEVDVCAqIEZST00gY2hlY2tfaWduX2VycjI7CiAgbiB8ICBt ICB8IGsgfCAgIGwgICAKIC0tLSstLS0tLSstLS0rLS0tLS0tLQogIDEgfCB7MX0gfCAxIHwgJ2Zv bycKLSgxIHJvdykKKyAzIHwgezN9IHwgMyB8ICdiYXInCisoMiByb3dzKQogCiAtLSB0ZXN0IGRh dGF0eXBlIGVycm9yIHRoYXQgY2FuJ3QgYmUgaGFuZGxlZCBhcyBzb2Z0OiBzaG91bGQgZmFpbAog Q1JFQVRFIFRBQkxFIGhhcmRfZXJyKGZvbyB3aWRnZXQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvY29weTIuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvY29weTIuc3FsCmlu ZGV4IDhiMTQ5NjIxOTQuLmZhNmFhMTczNDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL2NvcHkyLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9jb3B5Mi5zcWwKQEAgLTUz Myw2ICs1MzMsMTAgQEAgQ09QWSBjaGVja19pZ25fZXJyMiBGUk9NIFNURElOIFdJVEggKG9uX2Vy cm9yIGlnbm9yZSwgbG9nX3ZlcmJvc2l0eSB2ZXJib3NlKTsKIDEJezF9CTEJJ2ZvbycKIDIJezJ9 CTIJXE4KIFwuCitDT1BZIGNoZWNrX2lnbl9lcnIyIEZST00gU1RESU4gV0lUSCAob25fZXJyb3Ig aWdub3JlLCBsb2dfdmVyYm9zaXR5IHNpbGVudCk7CiszCXszfQkzCSdiYXInCis0CXs0fQk0CVxO CitcLgogCiAtLSByZXNldCBjb250ZXh0IGNob2ljZQogXHNldCBTSE9XX0NPTlRFWFQgZXJyb3Jz CgpiYXNlLWNvbW1pdDogOTVkNmU5YWYwN2QyZTVhZjJmZGQyNzJlNzJiNWI1NTJiYWQzZWEwYQot LSAKMi4zOS4yCgo= --=_a291cc782b87a7548b4b68112e58ee97 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v4-0002-Add-on_error-and-log_verbosity-options-to-file_fd.patch Content-Disposition: attachment; filename=v4-0002-Add-on_error-and-log_verbosity-options-to-file_fd.patch; size=7054 RnJvbSA2NGJjM2M1MzYwNWQyZTcxZGFiODE2YWFkMzEwOTc2NDRiNjNlNmQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFRodSwgMTkgU2VwIDIwMjQgMDA6MTg6MjMgKzA5MDAKU3ViamVjdDog W1BBVENIIHY0IDIvMl0gQWRkIG9uX2Vycm9yIGFuZCBsb2dfdmVyYm9zaXR5IG9wdGlvbnMgdG8g ZmlsZV9mZHcKCjllMmQ4NzAsIGI3MjViN2UgYW5kIGY1YTIyNzggaW50cm9kdWNlZCBvbl9lcnJv ciBhbmQgbG9nX3ZlcmJvc2l0eSB0byBDT1BZLgpTaW5jZSB0aGVzZSBvcHRpb25zIHNlZW1zIHVz ZWZ1bCB0byBmaWxlX2ZkdyB3aGVuIGFjY2Vzc2luZyBkaXJ0eSBkYXRhLAp0aGlzIHBhdGNoIGFk ZHMgdGhlbSB0byBmaWxlX2Zkdy4KLS0tCiBjb250cmliL2ZpbGVfZmR3L2V4cGVjdGVkL2ZpbGVf ZmR3Lm91dCB8IDE4ICsrKysrKysrCiBjb250cmliL2ZpbGVfZmR3L2ZpbGVfZmR3LmMgICAgICAg ICAgICB8IDYwICsrKysrKysrKysrKysrKysrKysrKysrLS0tCiBjb250cmliL2ZpbGVfZmR3L3Nx bC9maWxlX2Zkdy5zcWwgICAgICB8ICA2ICsrKwogZG9jL3NyYy9zZ21sL2ZpbGUtZmR3LnNnbWwg ICAgICAgICAgICAgfCAyMyArKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRp b25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZmlsZV9mZHcvZXhw ZWN0ZWQvZmlsZV9mZHcub3V0IGIvY29udHJpYi9maWxlX2Zkdy9leHBlY3RlZC9maWxlX2Zkdy5v dXQKaW5kZXggODZjMTQ4YTg2Yi4uMmVhMGRlZWIxMCAxMDA2NDQKLS0tIGEvY29udHJpYi9maWxl X2Zkdy9leHBlY3RlZC9maWxlX2Zkdy5vdXQKKysrIGIvY29udHJpYi9maWxlX2Zkdy9leHBlY3Rl ZC9maWxlX2Zkdy5vdXQKQEAgLTIwNiw2ICsyMDYsMjQgQEAgU0VMRUNUICogRlJPTSBhZ2dfY3N2 IGMgSk9JTiBhZ2dfdGV4dCB0IE9OICh0LmEgPSBjLmEpIE9SREVSIEJZIGMuYTsKIFNFTEVDVCAq IEZST00gYWdnX2JhZDsgICAgICAgICAgICAgICAtLSBFUlJPUgogRVJST1I6ICBpbnZhbGlkIGlu cHV0IHN5bnRheCBmb3IgdHlwZSByZWFsOiAiYWFhIgogQ09OVEVYVDogIENPUFkgYWdnX2JhZCwg bGluZSAzLCBjb2x1bW4gYjogImFhYSIKKy0tIG9uX2Vycm9yIGFuZCBsb2dfdmVyYm9zaXR5IHRl c3RzCitBTFRFUiBGT1JFSUdOIFRBQkxFIGFnZ19iYWQgT1BUSU9OUyAoQUREIG9uX2Vycm9yICdp Z25vcmUnKTsKK1NFTEVDVCAqIEZST00gYWdnX2JhZDsKK05PVElDRTogIDEgcm93IHdhcyBza2lw cGVkIGR1ZSB0byBkYXRhIHR5cGUgaW5jb21wYXRpYmlsaXR5CisgIGEgIHwgICBiICAgIAorLS0t LS0rLS0tLS0tLS0KKyAxMDAgfCA5OS4wOTcKKyAgNDIgfCAzMjQuNzgKKygyIHJvd3MpCisKK0FM VEVSIEZPUkVJR04gVEFCTEUgYWdnX2JhZCBPUFRJT05TIChBREQgbG9nX3ZlcmJvc2l0eSAnc2ls ZW50Jyk7CitTRUxFQ1QgKiBGUk9NIGFnZ19iYWQ7CisgIGEgIHwgICBiICAgIAorLS0tLS0rLS0t LS0tLS0KKyAxMDAgfCA5OS4wOTcKKyAgNDIgfCAzMjQuNzgKKygyIHJvd3MpCisKIC0tIG1pc2Mg cXVlcnkgdGVzdHMKIFx0IG9uCiBTRUxFQ1QgZXhwbGFpbl9maWx0ZXIoJ0VYUExBSU4gKFZFUkJP U0UsIENPU1RTIEZBTFNFKSBTRUxFQ1QgKiBGUk9NIGFnZ19jc3YnKTsKZGlmZiAtLWdpdCBhL2Nv bnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYyBiL2NvbnRyaWIvZmlsZV9mZHcvZmlsZV9mZHcuYwpp bmRleCBkMTY4MjFmOGUxLi44MmZkOWNiZTU1IDEwMDY0NAotLS0gYS9jb250cmliL2ZpbGVfZmR3 L2ZpbGVfZmR3LmMKKysrIGIvY29udHJpYi9maWxlX2Zkdy9maWxlX2Zkdy5jCkBAIC0yMiw4ICsy MiwxMCBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfYXV0aGlkLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19mb3JlaWduX3RhYmxlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvY29weS5oIgorI2luY2x1 ZGUgImNvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVm cmVtLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbi5oIgorI2luY2x1ZGUgImNvbW1hbmRz L3Byb2dyZXNzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiZm9y ZWlnbi9mZHdhcGkuaCIKICNpbmNsdWRlICJmb3JlaWduL2ZvcmVpZ24uaCIKQEAgLTM0LDYgKzM2 LDcgQEAKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm1haW4uaCIKICNpbmNsdWRlICJvcHRpbWl6 ZXIvcmVzdHJpY3RpbmZvLmgiCiAjaW5jbHVkZSAidXRpbHMvYWNsLmgiCisjaW5jbHVkZSAidXRp bHMvYmFja2VuZF9wcm9ncmVzcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVkZSAidXRpbHMvc2FtcGxpbmcuaCIKQEAgLTc0LDYg Kzc3LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBGaWxlRmR3T3B0aW9uIHZhbGlkX29wdGlvbnNb XSA9IHsKIAl7Im51bGwiLCBGb3JlaWduVGFibGVSZWxhdGlvbklkfSwKIAl7ImRlZmF1bHQiLCBG b3JlaWduVGFibGVSZWxhdGlvbklkfSwKIAl7ImVuY29kaW5nIiwgRm9yZWlnblRhYmxlUmVsYXRp b25JZH0sCisJeyJvbl9lcnJvciIsIEZvcmVpZ25UYWJsZVJlbGF0aW9uSWR9LAorCXsibG9nX3Zl cmJvc2l0eSIsIEZvcmVpZ25UYWJsZVJlbGF0aW9uSWR9LAogCXsiZm9yY2Vfbm90X251bGwiLCBB dHRyaWJ1dGVSZWxhdGlvbklkfSwKIAl7ImZvcmNlX251bGwiLCBBdHRyaWJ1dGVSZWxhdGlvbklk fSwKIApAQCAtNzI1LDEyICs3MzAsMTIgQEAgZmlsZUl0ZXJhdGVGb3JlaWduU2NhbihGb3JlaWdu U2NhblN0YXRlICpub2RlKQogCUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlNZW1vcnlDb250ZXh0 IG9sZGNvbnRleHQ7CiAJVHVwbGVUYWJsZVNsb3QgKnNsb3QgPSBub2RlLT5zcy5zc19TY2FuVHVw bGVTbG90OwotCWJvb2wJCWZvdW5kOworCUNvcHlGcm9tU3RhdGUgY3N0YXRlID0gZmVzdGF0ZS0+ Y3N0YXRlOwogCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNrOwogCiAJLyogU2V0IHVw IGNhbGxiYWNrIHRvIGlkZW50aWZ5IGVycm9yIGxpbmUgbnVtYmVyLiAqLwogCWVycmNhbGxiYWNr LmNhbGxiYWNrID0gQ29weUZyb21FcnJvckNhbGxiYWNrOwotCWVycmNhbGxiYWNrLmFyZyA9ICh2 b2lkICopIGZlc3RhdGUtPmNzdGF0ZTsKKwllcnJjYWxsYmFjay5hcmcgPSAodm9pZCAqKSBjc3Rh dGU7CiAJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCWVycm9y X2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CiAKQEAgLTc1MSwxMCArNzU2LDQwIEBAIGZp bGVJdGVyYXRlRm9yZWlnblNjYW4oRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSkKIAkgKiBzd2l0Y2gg aW4gY2FzZSB3ZSBhcmUgZG9pbmcgdGhhdC4KIAkgKi8KIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKLQlmb3VuZCA9 IE5leHRDb3B5RnJvbShmZXN0YXRlLT5jc3RhdGUsIGVjb250ZXh0LAotCQkJCQkJIHNsb3QtPnR0 c192YWx1ZXMsIHNsb3QtPnR0c19pc251bGwpOwotCWlmIChmb3VuZCkKKworCWZvcig7OykKKwl7 CisJCWlmICghTmV4dENvcHlGcm9tKGNzdGF0ZSwgZWNvbnRleHQsCisJCQkJCSBzbG90LT50dHNf dmFsdWVzLCBzbG90LT50dHNfaXNudWxsKSkKKwkJCWJyZWFrOworCisJCWlmIChjc3RhdGUtPm9w dHMub25fZXJyb3IgIT0gQ09QWV9PTl9FUlJPUl9TVE9QICYmCisJCQljc3RhdGUtPmVzY29udGV4 dC0+ZXJyb3Jfb2NjdXJyZWQpCisJCXsKKwkJCS8qCisJCQkgKiBTb2Z0IGVycm9yIG9jY3VycmVk LCBza2lwIHRoaXMgdHVwbGUgYW5kIGRlYWwgd2l0aCBlcnJvcgorCQkJICogaW5mb3JtYXRpb24g YWNjb3JkaW5nIHRvIE9OX0VSUk9SLgorCQkJICovCisJCQlpZiAoY3N0YXRlLT5vcHRzLm9uX2Vy cm9yID09IENPUFlfT05fRVJST1JfSUdOT1JFKQorCisJCQkJLyoKKwkJCQkgKiBKdXN0IG1ha2Ug RXJyb3JTYXZlQ29udGV4dCByZWFkeSBmb3IgdGhlIG5leHQgTmV4dENvcHlGcm9tLgorCQkJCSAq IFNpbmNlIHdlIGRvbid0IHNldCBkZXRhaWxzX3dhbnRlZCBhbmQgZXJyb3JfZGF0YSBpcyBub3Qg dG8KKwkJCQkgKiBiZSBmaWxsZWQsIGp1c3QgcmVzZXR0aW5nIGVycm9yX29jY3VycmVkIGlzIGVu b3VnaC4KKwkJCQkgKi8KKwkJCQljc3RhdGUtPmVzY29udGV4dC0+ZXJyb3Jfb2NjdXJyZWQgPSBm YWxzZTsKKworCQkJLyogUmVwb3J0IHRoYXQgdGhpcyB0dXBsZSB3YXMgc2tpcHBlZCBieSB0aGUg T05fRVJST1IgY2xhdXNlICovCisJCQlwZ3N0YXRfcHJvZ3Jlc3NfdXBkYXRlX3BhcmFtKFBST0dS RVNTX0NPUFlfVFVQTEVTX1NLSVBQRUQsCisJCQkJCQkJCQkJY3N0YXRlLT5udW1fZXJyb3JzKTsK KworCQkJLyogUmVwZWF0IE5leHRDb3B5RnJvbSgpIHVudGlsIG5vIHNvZnQgZXJyb3Igb2NjdXJz ICovCisJCQljb250aW51ZTsKKwkJfQorCiAJCUV4ZWNTdG9yZVZpcnR1YWxUdXBsZShzbG90KTsK KwkJYnJlYWs7CisJfQogCiAJLyogU3dpdGNoIGJhY2sgdG8gb3JpZ2luYWwgbWVtb3J5IGNvbnRl eHQgKi8KIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CkBAIC03OTYsOCArODMx LDE5IEBAIGZpbGVFbmRGb3JlaWduU2NhbihGb3JlaWduU2NhblN0YXRlICpub2RlKQogCUZpbGVG ZHdFeGVjdXRpb25TdGF0ZSAqZmVzdGF0ZSA9IChGaWxlRmR3RXhlY3V0aW9uU3RhdGUgKikgbm9k ZS0+ZmR3X3N0YXRlOwogCiAJLyogaWYgZmVzdGF0ZSBpcyBOVUxMLCB3ZSBhcmUgaW4gRVhQTEFJ Tjsgbm90aGluZyB0byBkbyAqLwotCWlmIChmZXN0YXRlKQotCQlFbmRDb3B5RnJvbShmZXN0YXRl LT5jc3RhdGUpOworCWlmICghZmVzdGF0ZSkKKwkJcmV0dXJuOworCisJaWYgKGZlc3RhdGUtPmNz dGF0ZS0+b3B0cy5vbl9lcnJvciAhPSBDT1BZX09OX0VSUk9SX1NUT1AgJiYKKwkJZmVzdGF0ZS0+ Y3N0YXRlLT5udW1fZXJyb3JzID4gMCAmJgorCQlmZXN0YXRlLT5jc3RhdGUtPm9wdHMubG9nX3Zl cmJvc2l0eSA+PSBDT1BZX0xPR19WRVJCT1NJVFlfREVGQVVMVCkKKwkJZXJlcG9ydChOT1RJQ0Us CisJCQkJZXJybXNnX3BsdXJhbCgiJWxsdSByb3cgd2FzIHNraXBwZWQgZHVlIHRvIGRhdGEgdHlw ZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCSAgIiVsbHUgcm93cyB3ZXJlIHNraXBwZWQgZHVl IHRvIGRhdGEgdHlwZSBpbmNvbXBhdGliaWxpdHkiLAorCQkJCQkJCSAgKHVuc2lnbmVkIGxvbmcg bG9uZykgZmVzdGF0ZS0+Y3N0YXRlLT5udW1fZXJyb3JzLAorCQkJCQkJCSAgKHVuc2lnbmVkIGxv bmcgbG9uZykgZmVzdGF0ZS0+Y3N0YXRlLT5udW1fZXJyb3JzKSk7CisKKwlFbmRDb3B5RnJvbShm ZXN0YXRlLT5jc3RhdGUpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvY29udHJpYi9maWxlX2Zkdy9z cWwvZmlsZV9mZHcuc3FsIGIvY29udHJpYi9maWxlX2Zkdy9zcWwvZmlsZV9mZHcuc3FsCmluZGV4 IGYwNTQ4ZTE0ZTEuLmE0MTcwNjdlNTQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvZmlsZV9mZHcvc3Fs L2ZpbGVfZmR3LnNxbAorKysgYi9jb250cmliL2ZpbGVfZmR3L3NxbC9maWxlX2Zkdy5zcWwKQEAg LTE1MCw2ICsxNTAsMTIgQEAgU0VMRUNUICogRlJPTSBhZ2dfY3N2IGMgSk9JTiBhZ2dfdGV4dCB0 IE9OICh0LmEgPSBjLmEpIE9SREVSIEJZIGMuYTsKIC0tIGVycm9yIGNvbnRleHQgcmVwb3J0IHRl c3RzCiBTRUxFQ1QgKiBGUk9NIGFnZ19iYWQ7ICAgICAgICAgICAgICAgLS0gRVJST1IKIAorLS0g b25fZXJyb3IgYW5kIGxvZ192ZXJib3NpdHkgdGVzdHMKK0FMVEVSIEZPUkVJR04gVEFCTEUgYWdn X2JhZCBPUFRJT05TIChBREQgb25fZXJyb3IgJ2lnbm9yZScpOworU0VMRUNUICogRlJPTSBhZ2df YmFkOworQUxURVIgRk9SRUlHTiBUQUJMRSBhZ2dfYmFkIE9QVElPTlMgKEFERCBsb2dfdmVyYm9z aXR5ICdzaWxlbnQnKTsKK1NFTEVDVCAqIEZST00gYWdnX2JhZDsKKwogLS0gbWlzYyBxdWVyeSB0 ZXN0cwogXHQgb24KIFNFTEVDVCBleHBsYWluX2ZpbHRlcignRVhQTEFJTiAoVkVSQk9TRSwgQ09T VFMgRkFMU0UpIFNFTEVDVCAqIEZST00gYWdnX2NzdicpOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL2ZpbGUtZmR3LnNnbWwgYi9kb2Mvc3JjL3NnbWwvZmlsZS1mZHcuc2dtbAppbmRleCBmMmYy YWY5YTU5Li5iYjM1NzliMDc3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZmlsZS1mZHcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvZmlsZS1mZHcuc2dtbApAQCAtMTI2LDYgKzEyNiwyOSBAQAog ICAgPC9saXN0aXRlbT4KICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgPHZhcmxpc3RlbnRyeT4KKyAg IDx0ZXJtPjxsaXRlcmFsPm9uX2Vycm9yPC9saXRlcmFsPjwvdGVybT4KKworICAgPGxpc3RpdGVt PgorICAgIDxwYXJhPgorICAgICBTcGVjaWZpZXMgaG93IHRvIGJlaGF2ZSB3aGVuIGVuY291bnRl cmluZyBhbiBlcnJvciBjb252ZXJ0aW5nIGEgY29sdW1uJ3MKKyAgICAgaW5wdXQgdmFsdWUgaW50 byBpdHMgZGF0YSB0eXBlLAorICAgICB0aGUgc2FtZSBhcyA8Y29tbWFuZD5DT1BZPC9jb21tYW5k PidzIDxsaXRlcmFsPk9OX0VSUk9SPC9saXRlcmFsPiBvcHRpb24uCisgICAgPC9wYXJhPgorICAg PC9saXN0aXRlbT4KKyAgPC92YXJsaXN0ZW50cnk+CisKKyAgPHZhcmxpc3RlbnRyeT4KKyAgIDx0 ZXJtPjxsaXRlcmFsPmxvZ192ZXJib3NpdHk8L2xpdGVyYWw+PC90ZXJtPgorCisgICA8bGlzdGl0 ZW0+CisgICAgPHBhcmE+CisgICAgIFNwZWNpZmllcyB0aGUgYW1vdW50IG9mIG1lc3NhZ2VzIGVt aXR0ZWQgYnkgPGxpdGVyYWw+ZmlsZV9mZHc8L2xpdGVyYWw+LAorICAgICB0aGUgc2FtZSBhcyA8 Y29tbWFuZD5DT1BZPC9jb21tYW5kPidzIDxsaXRlcmFsPkxPR19WRVJCT1NJVFk8L2xpdGVyYWw+ IG9wdGlvbi4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRyeT4K KwogIDwvdmFyaWFibGVsaXN0PgogCiAgPHBhcmE+Ci0tIAoyLjM5LjIKCg== --=_a291cc782b87a7548b4b68112e58ee97--