mirror of
https://github.com/opnsense/src.git
synced 2026-02-28 20:30:57 -05:00
Two minor optimizations of fdalloc():
- if minfd < fd_freefile (as is most often the case, since minfd is usually 0), set it to fd_freefile. - remove a call to fd_first_free() which duplicates work already done by fdused(). This change results in a small but measurable speedup for processes with large numbers (several thousands) of open files. PR: kern/85176 Submitted by: Divacky Roman <xdivac02@stud.fit.vutbr.cz> MFC after: 3 weeks
This commit is contained in:
parent
1d5cfebaca
commit
d09dfa2bfd
1 changed files with 3 additions and 1 deletions
|
|
@ -1238,6 +1238,9 @@ fdalloc(struct thread *td, int minfd, int *result)
|
|||
|
||||
FILEDESC_LOCK_ASSERT(fdp, MA_OWNED);
|
||||
|
||||
if (fdp->fd_freefile > minfd)
|
||||
minfd = fdp->fd_freefile;
|
||||
|
||||
PROC_LOCK(p);
|
||||
maxfd = min((int)lim_cur(p, RLIMIT_NOFILE), maxfilesperproc);
|
||||
PROC_UNLOCK(p);
|
||||
|
|
@ -1267,7 +1270,6 @@ fdalloc(struct thread *td, int minfd, int *result)
|
|||
("free descriptor isn't"));
|
||||
fdp->fd_ofileflags[fd] = 0; /* XXX needed? */
|
||||
fdused(fdp, fd);
|
||||
fdp->fd_freefile = fd_first_free(fdp, fd, fdp->fd_nfiles);
|
||||
*result = fd;
|
||||
return (0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue