-
- if ((flag & FMP) == 0) {
- for(fp=file; fp < fileNFILE; fp++)
- if (fp->f_count && (ip=fp->f_inode)->i_un.i_rdev==dev &&
- (ip->i_mode&IFMT) == mode)
- return;
- if (mode == IFBLK) {
- /*
- * on last close of a block device (that isn't mounted)
- * we must invalidate any in core blocks
- */
- bflush(dev);
- binval(dev);
- }
+ for (fp = file; fp < fileNFILE; fp++) {
+ if (fp->f_flag & FSOCKET)
+ continue;
+ if (fp->f_count && (ip = fp->f_inode) &&
+ ip->i_un.i_rdev == dev && (ip->i_mode&IFMT) == mode)
+ return;
+ }
+ if (mode == IFBLK) {
+ /*
+ * On last close of a block device (that isn't mounted)
+ * we must invalidate any in core blocks
+ */
+ bflush(dev);
+ binval(dev);