Index: sys/kern/kern_sendfile.c =================================================================== --- sys/kern/kern_sendfile.c +++ sys/kern/kern_sendfile.c @@ -52,6 +52,8 @@ #include #include +#include +#include #include #include @@ -545,8 +547,9 @@ struct shmfd *shmfd; struct sendfile_sync *sfs; struct vattr va; + struct inpcb *inp; off_t off, sbytes, rem, obj_size; - int error, softerr, bsize, hdrlen; + int domain, error, softerr, bsize, hdrlen; obj = NULL; so = NULL; @@ -742,6 +745,16 @@ refcount_init(&sfio->nios, 1); sfio->so = so; sfio->error = 0; + if ((flags & SF_NOCACHE) != 0 && + (inp = sotoinpcb(so)) != NULL && + (domain = inp->inp_numa_domain) != M_NODOM && + obj->domain.dr_policy != DOMAINSET_PREF(domain) && + obj->domain.dr_iter != domain) { + VM_OBJECT_WLOCK(obj); + obj->domain.dr_policy = DOMAINSET_PREF(domain); + obj->domain.dr_iter = domain; + VM_OBJECT_WUNLOCK(obj); + } nios = sendfile_swapin(obj, sfio, off, space, npages, rhpages, flags);