Message ID | 20230617053621.50359-4-bmeng@tinylab.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | net/tap: Fix QEMU frozen issue when the maximum number of file descriptors is very large | expand |
On Sat, 17 Jun 2023 13:36:18 +0800 Bin Meng <bmeng@tinylab.org> wrote: > When opening /proc/self/fd fails, current codes just return directly, > but we can fall back to close fds one by one. > > Signed-off-by: Bin Meng <bmeng@tinylab.org> > > --- > > (no changes since v2) > > Changes in v2: > - new patch: "util/async-teardown: Fall back to close fds one by one" > > util/async-teardown.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/util/async-teardown.c b/util/async-teardown.c > index 3ab19c8740..7e0177a8da 100644 > --- a/util/async-teardown.c > +++ b/util/async-teardown.c > @@ -48,7 +48,11 @@ static void close_all_open_fd(void) > > dir = opendir("/proc/self/fd"); > if (!dir) { > - /* If /proc is not mounted, there is nothing that can be done. */ > + /* If /proc is not mounted, close fds one by one. */ > + int open_max = sysconf(_SC_OPEN_MAX), i; > + for (i = 0; i < open_max; i++) { > + close(i); > + } > return; > } > /* Avoid closing the directory. */ a few patches later, you replace the whole close_all_open_fd() with a generic version, I don't see a point in changing the code here. this patch is useless, just drop it
On 2023/6/19 17:18:23, "Claudio Imbrenda" <imbrenda@linux.ibm.com> wrote: >On Sat, 17 Jun 2023 13:36:18 +0800 >Bin Meng <bmeng@tinylab.org> wrote: > >> When opening /proc/self/fd fails, current codes just return directly, >> but we can fall back to close fds one by one. >> >> Signed-off-by: Bin Meng <bmeng@tinylab.org> >> >> --- >> >> (no changes since v2) >> >> Changes in v2: >> - new patch: "util/async-teardown: Fall back to close fds one by one" >> >> util/async-teardown.c | 6 +++++- >> 1 file changed, 5 insertions(+), 1 deletion(-) >> >> diff --git a/util/async-teardown.c b/util/async-teardown.c >> index 3ab19c8740..7e0177a8da 100644 >> --- a/util/async-teardown.c >> +++ b/util/async-teardown.c >> @@ -48,7 +48,11 @@ static void close_all_open_fd(void) >> >> dir = opendir("/proc/self/fd"); >> if (!dir) { >> - /* If /proc is not mounted, there is nothing that can be done. */ >> + /* If /proc is not mounted, close fds one by one. */ >> + int open_max = sysconf(_SC_OPEN_MAX), i; >> + for (i = 0; i < open_max; i++) { >> + close(i); >> + } >> return; >> } >> /* Avoid closing the directory. */ > >a few patches later, you replace the whole close_all_open_fd() with a >generic version, I don't see a point in changing the code here. I meant to do a 100% replacement, and this patch added the missing loop. > > >this patch is useless, just drop it Regards, Bin
diff --git a/util/async-teardown.c b/util/async-teardown.c index 3ab19c8740..7e0177a8da 100644 --- a/util/async-teardown.c +++ b/util/async-teardown.c @@ -48,7 +48,11 @@ static void close_all_open_fd(void) dir = opendir("/proc/self/fd"); if (!dir) { - /* If /proc is not mounted, there is nothing that can be done. */ + /* If /proc is not mounted, close fds one by one. */ + int open_max = sysconf(_SC_OPEN_MAX), i; + for (i = 0; i < open_max; i++) { + close(i); + } return; } /* Avoid closing the directory. */
When opening /proc/self/fd fails, current codes just return directly, but we can fall back to close fds one by one. Signed-off-by: Bin Meng <bmeng@tinylab.org> --- (no changes since v2) Changes in v2: - new patch: "util/async-teardown: Fall back to close fds one by one" util/async-teardown.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)