RE: Subject: [PATCH V6 2/4] mm: frontswap: core code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > +#ifndef CONFIG_FRONTSWAP
> > +/* all inline routines become no-ops and all externs are ignored */
> > +#define frontswap_enabled (0)
> > +#endif
> > +
> > +static inline int frontswap_test(struct swap_info_struct *sis, pgoff_t
> > offset)
> > +{
> > +	int ret = 0;
> > +
> > +	if (frontswap_enabled && sis->frontswap_map)
> > +		ret = test_bit(offset % BITS_PER_LONG,
> > +			&sis->frontswap_map[offset/BITS_PER_LONG]);
> 
> 	if (sis->frontswap_map)
> 		ret = test_bit(offset, sis->frontswap_map);
> 
> (since sis->frontswap_map can't be non-NULL without
> frontswap_enabled being true, and since test_bit() itself already
> does what you open-coded here.

Hi Jan --

Thanks for the review!

> since test_bit() itself already does what you open-coded here

Good catch.  Will change.  Either is correct and I suspect the
compiler may end up generating the same code, but your code
is much more succinct.

> (since sis->frontswap_map can't be non-NULL without
> frontswap_enabled being true

As noted in the comment immediately preceding, the frontswap_enabled
check serves a second purpose:  When CONFIG_FRONTSWAP is
disabled, this entire inline function devolves to a compile-time
constant (0), which avoids a handful of ifdef's in the
core swap subsystem.  (This approach was originally suggested
for cleancache by Jeremy Fitzhardinge.)

Also, though this patch never unsets frontswap_enabled, it is
a global and some future tmem backend might unset it, so
it's probably best to leave the extra test anyway.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]