From 36f9c1155a38392555e0bdaf39fd6ebabb9ac9b4 Mon Sep 17 00:00:00 2001 From: Erik van der Kouwe Date: Wed, 23 Feb 2011 10:27:48 +0000 Subject: [PATCH] Restart process after response from async driver on non-blocking select --- servers/vfs/select.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/servers/vfs/select.c b/servers/vfs/select.c index 5a40dc654..96c2c54d0 100644 --- a/servers/vfs/select.c +++ b/servers/vfs/select.c @@ -767,19 +767,18 @@ PUBLIC void select_reply1() dp->dmap_sel_filp= NULL; fp->filp_select_flags &= ~FSF_BUSY; if (!(fp->filp_select_flags & (FSF_UPDATE|FSF_BLOCK))) - fp->filp_select_ops= 0; - if (status != 0) + fp->filp_select_ops= 0; + + if (status > 0) { - if (status > 0) - { - /* Clear the replied bits from the request mask unless - * FSF_UPDATE is set. - */ - if (!(fp->filp_select_flags & FSF_UPDATE)) - fp->filp_select_ops &= ~status; - } - filp_status(fp, status); + /* Clear the replied bits from the request mask unless + * FSF_UPDATE is set. + */ + if (!(fp->filp_select_flags & FSF_UPDATE)) + fp->filp_select_ops &= ~status; } + filp_status(fp, status); + if (fp->filp_count > 1) fp->filp_count--; else -- 2.44.0